基本的反爬虫策略
对于处理验证码,爬虫爬久了通常网站的处理策略就是让你输入验证码验证是否机器人,此时有三种解决方法:
1、把验证码下载到本地,手动输入验证码验证,成本较高,而且需要人为干预。
2、图像识别验证码,自动填写验证码,但是现在验证码都比较复杂,对于图像识别不熟悉的人来说,还是比较困难的。
3、对接打码平台,相对于前面两个来说更为实用。
多账号反爬
有很多的网站会通过同一个用户单位时间内操作频次来判断是否机器人,比如像新浪微博等网站。这种情况下我们就需要先测试单用户抓取阈值,然后在阈值前切换账号其他用户,如此循环即可。当然,新浪微博反爬手段不只是账号,还包括单ip操作频次等。
分布式爬虫
分布式能在一定程度上起到反爬虫的作用,当然相对于反爬虫分布式最大的作用还是能做到高效大量的抓取。
保存cookies
记录用户的状态,在模拟登陆十分麻烦的情况下,我们不妨直接在web上登陆之后取下cookie并保存然后带上cookie做爬虫,但这不是长久的方法,而且cookie隔一段时间可能失效。有的网站会根据cookie中的一些值去判断是否机器人,这个需要自己不断测试,比如豆瓣。
注意配合移动端、web端以及桌面版
其中web端包括m站即手机站和pc站,往往是pc站的模拟抓取难度大于手机站,所以在m站和pc站的资源相同的情况下优先考虑抓取m站。同时如果无法在web端抓取,不可忽略在app以及桌面版的也可以抓取到目标数据资源。
关于403问题的反爬处理
urllib.error.HTTPError: HTTP Error 403: Forbidden
这个问题是由于网站的反爬机制,如果用 urllib.request.urlopen 方式打开一个URL,服务器端只会收到一个单纯的对于该页面访问的请求,但是服务器并不知道发送这个请求使用的浏览器,操作系统,硬件平台等信息,而缺失这些信息的请求往往都是非正常的访问,例如爬虫.
下面给出两种方法:
第一种
第二种
领取专属 10元无门槛券
私享最新 技术干货