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

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

引入

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)

参考:

scrapy-redis 采集失败如何将url移出DupeFilter https://segmentfault.com/q/1010000017863812/

你可能感兴趣的:(Scrapy)