重试失败的页面下载

Scrapy 使用重试中间件可以轻松处理失败的页面请求。 安装后,Scrapy 将在收到以下 HTTP 错误代码时尝试重试:

[500, 502, 503, 504, 408]

可以使用以下参数进一步配置该过程:

  • RETRY_ENABLED(True/False - 默认为True)

  • RETRY_TIMES(出现任何错误时重试的次数 - 默认值为 2)

  • RETRY_HTTP_CODES(应重试的 HTTP 错误代码列表 - 默认为 [500, 502, 503, 504, 408])

如何做

06/01_scrapy_retry.py 脚本演示了如何配置 Scrapy 进行重试。该脚本文件包含 Scrapy 的以下配置:

process = CrawlerProcess({
    'LOG_LEVEL': 'DEBUG',
    'DOWNLOADER_MIDDLEWARES':
    {
        "scrapy.downloadermiddlewares.retry.RetryMiddleware": 500
    },
    'RETRY_ENABLED': True,
    'RETRY_TIMES': 3
})
process.crawl(Spider)
process.start()

工作原理

Scrapy 将在 spider 运行时按照指定的方式获取重试配置。当遇到错误时,Scrapy 会重试最多 3 次才放弃。