首页 > 解决方案 > 如何为 Scrapy 请求添加默认 errback

问题描述

我从我的基础蜘蛛那里继承了一堆蜘蛛。我想要的是在请求失败的情况下将调用的 errback。我不想改变我的任何蜘蛛,除了基础蜘蛛。

我在这些蜘蛛中经常遇到的是ResponseNeverReceived异常,这就是从不调用回调并且不会触发后续请求的原因。

我想为所有请求设置一个默认的 errback,以便在出现任何异常的情况下,twisted.web._newclient.ResponseNeverReceived或者twisted.web._newclient.ResponseFailed我可以触发不同的请求。

标签: pythonscrapy

解决方案


我使用为基础蜘蛛启用的自定义中间件实现了它。

我在中间件中使用的片段:

if hasattr(spider, 'default_errback') and request.errback is None:
    request.errback = spider.default_errback

推荐阅读