我有一个两部分的问题。
首先,我正在使用Scrapy编写一个基于CrawlSpider爬行器的网络爬行器。我的目标是抓取一个有数千条(可能是数十万条)记录的网站。这些记录从起始页往下埋了2-3层。所以基本上我让爬虫从某个页面开始,爬行直到它找到特定类型的记录,然后解析html。我想知道的是,有什么方法可以防止我的爬行器使站点过载?有没有可能在不同的请求之间增加或暂停?
其次,与之相关的是,有没有一种使用Scrapy的方法可以在不对网站施加过多压力的情况下测试爬虫?我知道你可以在程序运行的时候杀死它,但是有没有办法让脚本在遇到像第一页这样的页面时停止呢?
任何建议或资源都将非常感谢。
发布于 2011-12-17 14:40:16
有没有可能以增量的方式来做事情
我正在使用Scrapy缓存功能来增量地抓取站点
HTTPCACHE_ENABLED = True
或者,您可以使用新的0.14功能Jobs: pausing and resuming crawls
或者在不同的请求之间暂停?
检查此设置:
DOWNLOAD_DELAY
RANDOMIZE_DOWNLOAD_DELAY有没有一种方法可以在不对网站施加过多压力的情况下用Scrapy测试爬虫?
您可以尝试在Scrapy shell中调试代码
我知道你可以在程序运行的时候杀死它,但是有没有办法让脚本在遇到像第一页这样的页面时停止呢?
此外,您还可以随时在爬行器中调用scrapy.shell.inspect_response。
我们将非常感谢您的任何建议或资源。
Scrapy文档是最好的资源。
发布于 2011-12-17 13:42:04
你必须开始爬行并记录所有的事情。如果你被禁止了,你可以在页面请求之前添加sleep()。
更改用户代理也是一种很好的做法(http://www.user-agents.org/ http://www.useragentstring.com/ )
如果被ip禁止,可以使用proxy绕过它。干杯。
https://stackoverflow.com/questions/8542552
复制相似问题