Scrapy 暂停了几分钟

Scrapy paused for a few minutes

正如您在日志中看到的,我有一些停顿。之前 23:31:45 scrapy 几乎 20 秒就抓取了 31 页,但随后他从 23:31:45 暂停到 23:33:34 并在正常模式下继续他的工作。

我该如何解决这个问题或提供有关此问题的更多信息?

一些设置

CONCURRENT_REQUESTS_PER_DOMAIN = 16

# Enabled only for check logs
AUTOTHROTTLE_ENABLED = True
AUTOTHROTTLE_MAX_DELAY = 0

日志记录

23:31:44 [scrapy.extensions.throttle] INFO: slot: None | conc: 4 | delay:    0 ms (+0) | latency: 1279 ms | size: 43041 bytes
23:31:45 [scrapy.extensions.throttle] INFO: slot: None | conc: 4 | delay:    0 ms (+0) | latency:  798 ms | size: 10563 bytes
23:32:20 [scrapy.extensions.logstats] INFO: Crawled 31 pages (at 31 pages/min), scraped 2057 items (at 2057 items/min)
23:33:20 [scrapy.extensions.logstats] INFO: Crawled 31 pages (at 0 pages/min), scraped 2057 items (at 0 items/min)
23:33:34 [scrapy.extensions.throttle] INFO: slot: None | conc: 3 | delay:    0 ms (+0) | latency:  407 ms | size:   438 bytes

可能是因为 scrapy 所有的请求都失败了,那么它会默认重试 3 次,这会减慢速度。您正在抓取的服务器可能正在限制您的请求。您的请求从服务器收到了什么状态代码?如果您收到 429 错误,那么您可能会发送很多请求。

编辑

尝试在settings.py中添加DOWNLOAD_TIMEOUT,默认值是3分钟,这意味着scrapy可以等待很长时间让服务器超时。尝试设置为较小的值。 Scrapy docs download_timeout