问题场景
一次性爬取豆瓣的电影TOP250时,被服务器判定为IP异常,需要登录才能正常使用
原理
爬虫会干扰到正常的服务器访问,所以一般的网站都会有反爬虫机制,主要的原理是:
- 监听TCP连接;
- 分析请求中的User-Agent和refer信息;
- 访问时间间隔短,访问量大
解决方式
python爬取豆瓣电影,被反爬后的解决方式:
-
user_agent
user_agent是浏览器类型的详细信息,也是浏览器提交请求的重要请求头部字段;
可以提供不同的user_agent,来绕过浏览器的反爬机制; -
使用代理和IP轮换
反爬机制最常用的方式之一是检测IP,因此可以更换不同的IP地址来爬取内容; -
设置访问时间和间隔
有些网站的会设置访问时间间隔,短时间访问次数超过了默认次数,就会被禁用,因此可以降低访问频率,设置长一点的访问时间;
自己解决的时候是加headers,尽可能字段多和详尽,可以暂时解决IP被禁用,但是爬取太多页面还是会被禁用,所以为了直接解决这个问题,选择fake_useragent
来随机更换请求头里的User-Agent
字段,达到绕过反爬机制的效果
fake_useragent
的使用方法请移步: