scrapy-redis 采集失败如何将url移出DupeFilter

问题:采集页面时由于网络原因可能返回为空内容,但这条采集记录被记录在redis的DupeFilter中,导致不能二次采集。
请问:在spider 的编写过程中如何将采集失败的url手动移出redis的xx:DupeFilter。

阅读 3k
1 个回答

终于研究明白了,
引入
from scrapy.utils.request import request_fingerprint

在spiders中,手工判断response是否满足抓取要求,如果不满足删除指纹。

from scrapy.utils.request import request_fingerprint

    def parse(self,response):
        ajaxT = json.loads(response.text)
        if ajaxT['status'] == 'success':
             #这里是处理正确的逻辑
        else:
            #这里是处理失败的逻辑,从redis中删除访问记录
            fp = request_fingerprint(response.request, include_headers=None)
            self.server.srem(self.name + ':dupefilter', fp)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题