Scrapy Crawler流程设置

时间:2018-12-12 16:15:07

标签: python web-scraping scrapy

我已经构建了多个搜寻器,并希望使用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()

2 个答案:

答案 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或进一步减慢蜘蛛的速度。

您可以使用以下设置进行播放: