我已经构建了多个搜寻器,并希望使用CrawlerProcess
同时运行它们。但是,在构建Spider时,我对其进行了设置,以使其运行速度稍慢并且下载延迟。分别运行蜘蛛程序时,设置工作正常,但是当我运行所有四个蜘蛛程序时,其抓取速度非常快,并且有几个站点使我无法使用网络。我想知道的是为什么CrawlerProcess
不遵循这些设置,如果有办法做到这一点,我该如何实现。
这是我的设置方式:
TMP_FILE = os.path.join(os.path.dirname(sys.modules['items'].__file__), 'tmp/items.csv')
process = CrawlerProcess({
'FEED_FORMAT': 'csv',
'FEED_URI': TMP_FILE,
})
process.crawl(Spider1)
process.crawl(Spider2)
process.crawl(Spider3)
process.crawl(Spider4)
process.start()
答案 0 :(得分:0)
通过向我的每个蜘蛛添加自定义设置来解决此问题。您可以在起始网址列表下方添加此内容。
start_urls =['www.example.com']
custom_settings = {
'DOWNLOAD_DELAY': 8,
'CONCURRENT_REQUESTS': 1,
'AUTOTHROTTLE_ENABLED': True,
'AUTOTHROTTLE_START_DELAY': 5,
}
答案 1 :(得分:0)
之所以会发生这种情况,是因为每个蜘蛛都在不知道彼此的情况下单独运行。
当然,所有蜘蛛都使用相同的设置,但这是唯一的连接。
该站点必须抱怨可能是同一源代理/ IP进行了多个请求,所以我建议也许使用proxy iterator service或进一步减慢蜘蛛的速度。
您可以使用以下设置进行播放: