zoukankan      html  css  js  c++  java
  • Python简单爬虫

    本博客主要用来记录一下学习过程中所使用的代码:
    我们以豆瓣电影网为例子,来爬取上面的数据:
    链接:豆瓣电影

    import requests
    url="https://movie.douban.com/"
    resp=requests.get(url)
    resp.encoding="utf-8"
    #print(resp.text)
    f=open("douban.html","w")
    f.write(resp.text)
    print("over")
    resp.close()#关闭会话,防止后续使用爬虫出现无法访问的情况
    

    以上是一个非常基本并且简单的爬取网页源代码的爬虫。
    但是我们可以发现爬取下来在douban.html中是没有任何东西的,所以这个时候我们大概率是被监测到不是人工在进行网页的访问,而是自动化程序,这个时候就需要我们进行伪装一下,最基础的伪装就是User Agent的伪装,查看我们自己的UA需要使用浏览器自带的抓包工具,按下F12,然后在Network选项中重新刷新网页,在抓获的包中,我们就能够获得我们想要的UA信息

    import requests
    url="https://movie.douban.com/"
    #反爬可以在这里加一个头
    dic={# 这里dic代表的时请求头,是一个字典变量
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.62"
    }
    #然后下面的请求改一下就可以了
    resp=requests.get(url,headers=dic)
    #resp=requests.get(url)
    resp.encoding="utf-8"# windows系统必须加这个否则读取中文的时候可能会出现乱码的情况
    #print(resp.text)
    f=open("douban.html","w",encoding="utf-8")#windows系统一定要写encoding="utf-8"
    f.write(resp.text)
    print("over")
    resp.close()#关闭会话,防止后续使用爬虫出现无法访问的情况
    

    这个时候我们加入了这些以后,可以发现我们可以正常爬取东西了。

    同理如果我们要像浏览器传入数据然后爬取相应的内容,我们也同上,首先先用浏览器自带的抓包工具检查所发送包中的变量名称,然后将这些变量存在一个新建的字典中,最后在调用request.get的时候将这个字典赋值给data,就可以实现查询我们想要查询的东西了,具体实现方法见如下代码:

    import requests
    url="输入目标网址"
    #反爬可以在这里加一个头
    dic={# 这里dic代表的时请求头,是一个字典变量
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.62"
    }
    dat={
        "输入变量1名称": "输入变量1的值",
        "输入变量2名称": "输入变量2的值"
    #·········
    }
    #然后下面的请求改一下就可以了
    resp=requests.get(url,headers=dic,data=dat)
    #resp=requests.get(url)
    resp.encoding="utf-8"# windows系统必须加这个否则读取中文的时候可能会出现乱码的情况
    #print(resp.text)
    f=open("douban.html","w",encoding="utf-8")#windows系统一定要写encoding="utf-8"
    f.write(resp.text)
    print("over")
    resp.close()
    
  • 相关阅读:
    利用SqlBulkCopy快速大批量导入数据
    未能完成操作,无效的FormATETC结构
    JS编码和Asp.net编码
    Sql分页两种常用算法
    Subsonic.exe 生成数据访问层代码,报“从索引 0 处开始,初始化字符串的格式不符合规范”错误解决办法
    Asp.Net,代码实现页面输出缓存
    JS中all Collection 的几个方法
    注册、反注册dll,regsvr32命令详解
    ASP.NET页面传值汇总(Session/Server.Transfer/Query String/Cookie/Application)
    表格导出EXCEL
  • 原文地址:https://www.cnblogs.com/mudrobot/p/15098419.html
Copyright © 2011-2022 走看看