利用浏览器抓包,是爬虫中的很实用的技能。在爬虫编程之前,我们要对抓取的目标页面有所了解,比如浏览器的这个请求这个页面中间都经历了什么,数据是怎么发送和返回的。
抓包的作用
我把抓包分析的作用简单列一下:
分析请求的headers等等,可以加载到你的爬虫中,伪装成浏览器。往往可以躲过简单的反扒策略登录状态获取,如果我们在浏览器中登录,抓包拿到cookies,加到我们的爬虫中,往往就可以绕过登录这道坎,爬虫直接登堂入室,抓取更有价值的数据post请求,例如页面中通过post提交的表单。我们就可以抓包看到请求是每个参数的key和value,key是什么、value有没有编码等等抓接口,抓包往往可以看到服务器返回到浏览器的的响应数据是什么,比如很多页面中的数据,其实是中间经过一次接口的,接口中往往是json数据。这样爬虫就可以直接抓接口,而不是原网页。json数据中比页面解析提取数据来的遍历抓包分析,有时可以绕过有些网站的反扒限制,甚至网站的验证码(极少其概况下啊)···
如何抓包
案例一
浏览器例如Chrome、Firfox都支持抓包,其中Firfox有一个开发者版本 firefox developer edition,更加专业一些,可以安装玩玩看。
我们以Chrome浏览器为例吧,要有一个抓包的页面啊
就这个链接啦:
http://baijiahao.baidu.com/builder/preview/s?id=1601067954790004275
浏览器中输入这个链接,页面空白处,右键“检查”,点击“network”,再次刷新页面,看到如下:
看似访问一个页面,其实中间经过这么多请求。
其中左侧,每一个请求的Headers标签中内容如下四个部分:
GeneralResponse HeaderRequest HeadersQuery其中重点在请求的headers,将里面的数据设置到你的爬虫,就可以伪装爬虫,通常设置Cookie、Host、User-Agent、Referer等。
案例二
post请求的抓包。
有表单的页面,点击提交,抓包可以查看post的数据有哪些,是否对数据编码等
案例三
抓包,获取接口。这个页面http://www.2345.com/corp.htm?innertab想要获取这个页面上的各个行业和相应网址。抓取这个链接,提取页面元素。不论是用正则、xpath、beautifulsoup等等。有更好的办法吗?抓包看看
通过抓包,我们得到接口:http://www.2345.com/js/nvaurllist1202.js?v=8.13.1抓取这个链接进行数据提取,不是比原页面简单些吗。
python爬虫学习之路-抓包分析 就到这里,下次开始初认python的urllib、urllib2、requests,理清楚三者的关系。这里是python2,学习了python2的爬虫开发,python3也不在话下