我试图使用Scrapy在一些网站上搜集大约70k项目。但每次刮掉大约200件物品后,其余部分都会弹出错误:
scrapy] DEBUG: Ignoring response <404 http://www.somewebsite.com/1234>: HTTP status code is not handled or not allowed
我相信这是因为我的蜘蛛被网站阻止了,我尝试使用随机用户代理建议here,但它根本没有解决问题。有什么好的建议吗?
答案 0 :(得分:0)
您可以强迫某人回答您的问题或向您提供信息吗?您也不能强制使用Web服务器。充其量,您可以尝试模拟Web服务器将应答的客户端。为此,您需要确定服务器用于决定是否回答请求的标准,然后您可以(尝试)形成符合条件的请求。
答案 1 :(得分:0)
如果您被阻止,您的蜘蛛可能会经常或太快地袭击该网站。
除了随机用户代理之外,您还可以尝试在settings.py中设置CONCURRENT_REQUESTS和DOWNLOAD_DELAY选项。默认情况相当激进,会破坏网站。
您拥有的其他选项是使用代理或将AWS与nano实例一起使用,每次重启时都会获得新IP。
请记住,抓取充其量只是一个灰色区域,您绝对需要尊重网站所有者。最好的方法显然是征得业主的许可,但是你没有必要确保你的抓取工作不会脱离通常的浏览模式,或者你很快就会被阻止。
有些网站使用相当复杂的技术来识别包括cookie和javascript在内的刮刀,以及在网站上请求模式和时间等。还有一些基于云的反刮解决方案,如蒸馏或shieldsquare,如果你&#39反对你,需要投入大量精力让你的蜘蛛变得人性化!