作家
登录

python爬虫入门基本知识

作者: 来源: 2017-04-12 13:40:46 阅读 我要评论

响应消息的第一行的状况行包含HTTP的协定版本、状况码、状况码含义。按照商定

  • 2xx表示请求成功
  • 3xx表示重定向
  • 4xx表示客户端缺点(403 Forbiden 404 Not Found)
  • 5xx表示办事器缺点(502 网关缺点)

爬虫开辟

如不雅我们想要主动保存Cookie信息,只须要生成一个Session对象,之后所有的请求经由过程此对象完成,requests会像浏览器一样主动更新cookie信息,并在每次请求的时刻加上cookie,是以在成功的发送post上岸请求之后,就可以用session在保持上岸状况请求数据了。须要留意的是在请求的时刻我特意去掉落了Cookie和Content-Length报头,因为requests会主动加上,所以不须要我们特意存眷。

一般来说开辟爬虫的过程是如许的

  1. 抓包分析获取数据的URL
  2. 经由过程python大年夜上一步的URL获取数据
  3. 大年夜上一步获取的HTML页面或者JSON数据中解析出感兴趣的数据
  4. 存储数据

下面就讲解这四个关键点

HTTP响应的数据格局有很多,例如文本、json、html,对应的解析方法也很多。通用一点,用python内置库正则匹拍┞芬到想要的数据,然则这种办法相对来说比较麻烦,并且不好保护,比较合适文本类型的数据,但HTTP响应正文根本都是json和HTML,这种方法实用面比较窄。

抓包发包对象

python爬虫入门根本常识

再介绍别的两个HTTP抓包对象——Fiddler和Charles,分别在windows和macos应用。它们可认为我们展示更多HTTP的细节,将要乞降响应都调至Raw模式下,我们就可以一睹HTTP要乞降响应的┞锋实面孔。

经由过程抓包分析出具体的URL后,想进一步确认本身构造的参数和报头可否精确获取到数据,应当怎么做呢?不怕,postman可以帮你,你可以很轻松的选择办法,定义header,添加各类类型的body。

python爬虫入门根本常识

python请求数据

讲完了根本的HTTP协定常识后,大年夜家可能会疑问那我该若何模仿浏览器或者手机客户端去向办事器发送HTTP请求呢?python的原生库urllib、第三方库requests、pycurl等都支撑HTTP协定,既然有这么多对象可以用,大年夜家可能就又有疑问钙揭捉?择哪个对象了。在此我特地安利大年夜家用一下requests,它让爬虫变得如斯简单,让你再也不消为字符编码、重定向、cookie、响应解紧缩懊末路了。如不雅你保持用原生的看维那么竽暌剐以下问题须要你一一解决,这些都是昔时本身趟过的坑,绝非危言耸听。

  1. 须要本身断定办事器返回数据的编码格局,如不雅这个处所你不克不及精确断定,那恭喜你之后的每一步,你都必须面对乱码的问题
  2. 重定向,urllib不克不及主动断定重定向,须要本身解析重定向的链接并从新请求
  3. 如不雅模仿上岸,你必须要手动包管Cookie精确更新和发送
  4. 很多情况下响应正文是紧缩过的,须要做解压处理
  5. 对于比较长的响应正文,办事器会将正文分段传输,所以还须要你做拼接操作
  6. 原生的urllib对HTTPS和持久连接都支撑不好

当你花了一成天,写了好几百行的代码终于解决膳绫擎的问题后,而你旁边的同事可能早已经把数据下载拆档高兴的约妹子去了。所以用requests吧,兄弟们用了都说好。下面我用两个例子讲解一下若何用requests获取想要的数据,并教你若何解决这些问题:

  • 若何发送不合办法的请求
  • 若何保存cookie
  • 若何添加代劳
  • 若何处理编码问题

B站

假如我想下载B站琅绫擎某位蜜斯姐所有上传的视频,应当怎么办呢?起首你须要找到这位蜜斯姐的视频主页

python爬虫入门根本常识

python爬虫入门根本常识

获取视频的URL: http://space.bilibili.com/ajax/member/getSubmitVideos?mid=79415852&pagesize=30&tid=0&page=1&keyword=&order=senddate

那么问题又来了,这个URL的其他参数是干啥的呢?凭经验,mid肯定是这位蜜斯姐的用户id,page和pagesize是负责分页用的,keyword和是用来搜刮的关键字,order是排序选项,剩下的tid是干啥的呢?其实写爬虫很多时刻都邑碰到这种问题,不知道某个参数的含义,也不肯定精确的取值范围,须要一些测验测验和命运运限,这里我们不管它就好。而返回的字段中有一个aid,那肯定是视频的id,有这个就可以本身拼接出播放链接了。

是不是很简单,经由过程response.ok查看请求是否精确返回,因为此接口的数据为json格局,直接经由过程response.json()就可以直接拿到格局化的数据。

  1. pip install requests pyquery SQLAlchemy 

知乎

固然如今知乎对未登录用户展示的内容越来越多,然则仍会有一些限制,用爬虫模仿上岸可以之后再去爬取数据,可以避免很多不须要的麻烦,如今就讲一讲若何用requests模仿用户上岸。

照样和之前一样,在上岸页面打开谷歌浏览器的抓包窗口,输入用户名和暗码点击肯定,然后在茫茫请求中找到发奉上岸信息的那个HTTP请求即可,工夫不负有心人,我们终于找到了上岸的请求。


  推荐阅读

  浅析前端页面渲染机制

作为一个前端开辟,最常见的运行情况应当是浏览器吧,为了更好的经由过程浏览器把优良的产品带给用户,也为了更好的成长本身的前端职业之路,有须要懂得大年夜我们在浏览器地址栏输入网址>>>详细阅读


本文标题:python爬虫入门基本知识

地址:http://www.17bianji.com/lsqh/34754.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)