2016-02-02 35 views
0

我正在尝试使用Scrapy来抓取一些关于70k物品的网站。但每次经过它刮掉约200个项目时,泰斯错误会弹出一个休息:404:有没有什么办法可以避免在使用scrapy进行搜索时被网站拦截

scrapy] DEBUG: Ignoring response <404 http://www.somewebsite.com/1234>: HTTP status code is not handled or not allowed 

我相信这是因为我的蜘蛛得到了封锁的网站,我尝试使用随机用户代理建议here但根本不能解决问题。有什么好的建议吗?

+0

对我来说,最好的解决方法是使用'和服实验室',你可以从字面上抓取任何东西并创建一个API,并让他们担心禁止你在JSON中获取数据的情况,你可以通过点击他们的API来获得数据。 –

回答

0

你能强迫某人回答你的问题或给你提供信息吗?你也不能强制一个Web服务器。充其量,您可以尝试模拟Web服务器将回答的客户端。为此,您需要确定服务器用于决定是否回答请求的标准,然后您可以(尝试)形成满足标准的请求。

0

如果您被阻止,您的蜘蛛可能会频繁或过快地击中网站。

除了随机的用户代理,您可以尝试在settings.py中设置CONCURRENT_REQUESTS和DOWNLOAD_DELAY选项。默认是相当积极的,并会锤击一个网站。

您拥有的其他选项是使用代理或在nano实例中使用AWS,每次重新引导都会得到一个新IP。

请记住,刮是灰色地带,你绝对需要尊重网站所有者。最好的方法显然是向所有者寻求许可,但是如果不能确保你的努力不会从通常的浏览模式中脱颖而出,或者你很快就会被阻止。

一些网站使用相当复杂的技术来识别包括cookie和javascript的刮板,以及请求模式和网站上的时间等。还有一些基于云的防刮解决方案,例如蒸馏或shieldsquare,反对你需要付出很大的努力才能让你的蜘蛛看起来像人类!

+0

同时尝试CONCURRENT_REQUESTS和DOWNLOAD_DELAY仍然无法正常工作,我基本上试图从简历中剔除简历,这是否可行? – snowneji

相关问题