在学习python爬虫的过程中,遇到各种反爬机制,个人总结了一下:
对同样的ip或User-Agent进行限制,
对频繁访问的ip进行限制,
设置登陆限制,
设置验证码,
设置Ajax加载页面。
目前小白我也就了解这么多,其中验证码的反反爬还在学习当中,学无止境啊
第一篇就说点简单的。
如果遇到前两种,还是比较好解决的。
遇到对User-Agent进行限制的,可以在代码中修改请求头,即
headers = {
"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50"
}
写入Request中就可以了,推荐个网站,里面的常用的User-Agent比较全,提示!提示!提示!网站中的那一行行里面前面的user-agent是不需要的,只要后面的。
http://www.jsons.cn/useragent/
对于限制ip的,第一,可以自己整一个代理ip尝试,这种也是成功一时的方法,长久参考,设置一个代理池是比较妥当的方法。
在scrapy框架中,代理池可以设置在settings里面,也可以设置在 中间件Middlewares.py中,这里就说一下在中间件Middlewares
中设置代理池吧,上代码
# 首先,这是自己能够找到ip的时候,可以整个列表,然后写个随机函数随机取一个
import random
PROXIES = ['http://183.