我正在爬一个网站时,他们用403阻止了我。我仍然可以从我的任何浏览器访问该网站,但我的Scrapy脚本无法爬取。
我从家里爬用5个代理,每个有10个IP随机选择。我有大约40个用户代理随机选择(请参阅下面的代码)。在每个请求上选择一组新的代理和user_agent。每个yield请求大约有1 MB重。当收集到大约100个请求时,脚本(使用Github的S3 pipelines)发送一个包到我在AWS上的S3。我有一个下载延迟10和自动节流阀激活在我的Scrapy项目的设置。所有这一切都是与网站robots.txt请求一致的-爬行延迟10。
我阅读了Scrapy、Python和其他一些工具的说明手册,但找不到任何方法来让爬行变得更“人性化”。
我的设置(提取):
第一个问题:
1条答案
按热度按时间j0pj023g1#
我使用了Freddy的设置,并进行了小修改,并根据@Agus-Mathew的建议减少了“CONCURRENT_REQUESTS_PER_IP”。
所以,〉我的〈最终设置是:
我配置了我的Scrapy头如下,因为我只收到了我的Scrapy脚本块-而不是我的网页浏览器(如Freddy).旋转代理我没有使用的工作.
当然,这取决于我们要抓取的网站,如果他们的API设置对请求过于敏感,那么我们必须做出相应的调整。
顺便说一句:我经常读到关于在蜘蛛中使用“time.seep()”(或者个人不使用,因为Twisted Reactor和Scrapy并发)。但是在我的例子中,time.sleep对避免错误没有任何作用。所以它对我没有帮助。