scrapy errback与下载中间件的区别 以及 重爬处理

请教下 scrapy Request的errback,和RetryMiddleware下载中间件对错误的处理有什么区别吗?
似乎都能实现在爬取出错的时候对错误的捕获和处理。

希望能对各种400 或者 断网等各种情况的捕获改使用哪种方法比较好。
还有就是 如何在出错后,如何将当前的爬取地址重新加入队列?

setting里面只有见得重试使能 次数 和特定code。

如何能给我个简单的例程就更棒了!
感谢

阅读 4.1k
1 个回答

重新查看文档
errback似乎更适合用于检查记录请求产生的错误,但是不适合请求的重试。

retry中间件能将出错的任务调用_retry方法 检查最大重试次数加入到队尾

更新 通过重写RetryMiddleware实现对爬取出错的处理和重爬:

def process_response(self, request, response, spider)
该方法默认情况下对
RETRY_HTTP_CODES = [500, 502, 503, 504, 400, 408] 中情况进行重爬
如果需要修改则可以次方法或者在setting中修改RETRY_HTTP_CODES

def process_exception(self, request, exception, spider):
默认对一组出错情况的列表进行筛选,符合则执行重爬

处理好这两个方法基本能处理爬取出错的情况。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题