根据scrapy官方文档:http://doc.scrapy.org/en/master/topics/practices.html#avoiding-getting-banned里面的描述,要防止scrapy被ban,主要有以下几个策略:
- 动态设置user agent
- 禁用cookies
- 设置延迟下载
- 使用Google cache
- 使用IP地址池(Tor project、VPN和代理IP)
- 使用Crawlera
1.创建middlewares.py
scrapy代理IP、user agent的切换都是通过DOWNLOADER_MIDDLEWARES进行控制,下面我们创建middlewares.py文件。
文件内容如下:
|
|
类RandomUserAgent主要用来动态获取user agent,user agent列表USER_AGENTS在settings.py中进行配置。
类ProxyMiddleware用来切换代理,proxy列表PROXIES也是在settings.py中进行配置。
2.修改settings.py配置
- 添加USER_AGENTS
|
|
- 添加代理ip设置PROXIES
|
|
代理IP可以网上搜索一下,上面的代理IP获取自:http://www.xici.net.co/。
刚开始看到这没明白代理ip什么意思,上面网址首页给出的ip就都是可以用的,如果上面给出的几个不能用了,可以去这个网站随便在copy几个下来。都是没有密码的,user_pass这项都不用动。
禁用cookies
123* 设置下载延迟```DOWNLOAD_DELAY=3最后设置DOWNLOADER_MIDDLEWARES
|
|
以上几个措施可以单独使用也可以组合使用,这些方法我都放在了爬取cnblogs博客文章(保存json)这个工程中
此工程github地址:https://github.com/lowkeynic4/crawl/tree/master/cnblogs%28%E9%98%B2ban%29