Scrapy履带式工艺设置

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

我已经构建了多个爬虫,并希望使用CrawlerProcess同时运行它们。但是,在构建蜘蛛时,我将其设置为运行速度稍慢并且有下载延迟。在单独运行蜘蛛时,设置工作正常但是当我运行所有四个蜘蛛时它的爬行速度非常快,一些网站正在把我从网络中踢出去。我想知道的是为什么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()
提问于
用户回答回答于

发生这种情况是因为每个蜘蛛都是单独运行而他们不知道彼此。

当然,所有蜘蛛都使用相同的设置,但这是唯一的连接。

该网站必须抱怨多个请求正在完成,可能是由相同的源代理/ IP,所以我建议可能使用代理迭代器服务或更慢地减慢蜘蛛。

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

用户回答回答于

通过向每个蜘蛛添加自定义设置来解决此问题。您可以在开始网址列表下方添加此项。

start_urls =['www.example.com']

custom_settings = {
    'DOWNLOAD_DELAY': 8,
    'CONCURRENT_REQUESTS': 1,
    'AUTOTHROTTLE_ENABLED': True,
    'AUTOTHROTTLE_START_DELAY': 5,

}

扫码关注云+社区

领取腾讯云代金券