python – Scrapy:收集重试消息
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Scrapy:收集重试消息,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1471字,纯文字阅读大概需要3分钟。
内容图文
![python – Scrapy:收集重试消息](/upload/InfoBanner/zyjiaocheng/725/5d29523624b44f73ae4eb6809968d075.jpg)
爬行程序有一个格式化次数,如here所示.到达之后,我收到类似于以下内容的错误:
重试< GET https:/ foo / bar / 123> (失败了3次)
我相信该消息是由代码here产生的.
但是,我想做一些关于放弃的事情.具体来说,我想知道是否有可能:
>提取URL的123部分(ID)并将这些ID正确地写入单独的文件中.
>访问原始请求中的元信息. This documentation可能会有所帮助.
解决方法:
您可以继承scrapy.contrib.downloadermiddleware.retry.RetryMiddleware并覆盖_retry()以根据请求执行您想要的任何操作.
from scrapy.contrib.downloadermiddleware.retry import RetryMiddleware
from scrapy import log
class CustomRetryMiddleware(RetryMiddleware):
def _retry(self, request, reason, spider):
retries = request.meta.get('retry_times', 0) + 1
if retries <= self.max_retry_times:
log.msg(format="Retrying %(request)s (failed %(retries)d times): %(reason)s",
level=log.DEBUG, spider=spider, request=request, retries=retries, reason=reason)
retryreq = request.copy()
retryreq.meta['retry_times'] = retries
retryreq.dont_filter = True
retryreq.priority = request.priority + self.priority_adjust
return retryreq
else:
# do something with the request: inspect request.meta, look at request.url...
log.msg(format="Gave up retrying %(request)s (failed %(retries)d times): %(reason)s",
level=log.DEBUG, spider=spider, request=request, retries=retries, reason=reason)
然后,您需要在settings.py中引用此自定义中间件组件
DOWNLOADER_MIDDLEWARES = {
'scrapy.contrib.downloadermiddleware.retry.RetryMiddleware': None,
'myproject.middlewares.CustomRetryMiddleware': 500,
}
内容总结
以上是互联网集市为您收集整理的python – Scrapy:收集重试消息全部内容,希望文章能够帮你解决python – Scrapy:收集重试消息所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。