您的位置:首页 > 编程语言 > Python开发

python高阶爬虫实战

2018-03-30 11:58 274 查看
首先我们要知道,互联网中存在着无数的数据资源,通过网站网页呈现给用户。基本上都是用户发送一个请求,然后获得服务器响应发回对应的数据。很多网站上的数据爬取比较简单,只需要直接request那个网址就可以,很多小型网站都是这样。面对这样的网站数据,只需要花个几分钟随便写几行代码,就能爬到我们想要的数据。
但是想要爬取稍微大型一些的网站数据,就不会这么容易了。这些网站的服务器,会分析收到的每一条request,来判断该请求是否为用户操作。这种技术,我们把它称为反爬技术。常见的反爬技术,楼主知道的有上面所述的分析请求,还有验证码技术。对于这两种情况,我们在构造爬虫程序的时候就需要稍微费点力气了。
先来介绍第一种的应对方法。首先我们要知道一条request的组成部分,不同网站的request格式可能会有点不同。对于这一点,我们可以通过浏览器的开发者工具,抓到一个网站的请求数据格式。如下图:



此为使用谷歌浏览器抓取的请求信息。
我们可以看到request headers的格式,所以在访问这样的网站的时候,我们就不能忘了在postdata中放上一条伪造的headers。headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:32.0) Gecko/20100101 Firefox/32.0',
'Referer': 'Address'}其中referer键对应的值是要访问的网址。
某些网站还会需要有cookie的用户验证,我们可以通过调用requests.Session().cookies来获得它。
如果在爬虫中需要提交某些信息的话,还要构造一下postdata的数据。比如这样:postData = {
'username': ul[i][0],
'password': ul[i][1],
'lt': b.group(1),
'execution': 'e1s1',
'_eventId': 'submit',
'submit': '%B5%C7%C2%BC',
}而对于爬虫处理验证码的话,目前楼主能想到的就是通过PIL做图像分析,提取图像特征值来匹配验证码内容。
具体的算法网上有很多,根据不同验证码的种类,有不同的算法,不过思路基本一样。楼主就不举例了。
以上是爬虫进阶内容,若有错误还望指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 爬虫 进阶