scrapys复制过滤器会忽略已经看到的url /请求。到目前为止,一切都很好。
问题
即使请求被丢弃,我仍然希望保留重定向历史记录。
示例:
在这种情况下,请求2被丢弃而没有让我知道它是请求1的“隐藏”副本。
尝试
我已经尝试捕获信号request_dropped。这可行,但是我看不到从处理程序向管道发送项目的可能性。
最诚挚的问候,感谢您的帮助:)
拉斐尔
答案 0 :(得分:0)
您可能正在寻找DUPEFILTER_DEBUG
在True
文件中将其设置为settings.py
,您将看到由于重复而被忽略的所有URL
答案 1 :(得分:0)
我想出了一种处理那些“隐藏”重定向的方法:
@classmethod def from_crawler(cls, crawler, *args, **kwargs): spider = super(YourSpider, cls).from_crawler(crawler, *args, **kwargs) crawler.signals.connect(spider.on_request_dropped, signal=signals.request_dropped) return spider
def on_request_dropped(self, request, spider): """ handle dropped request (duplicates) """ request.callback = self.parse_redirection_from_dropped_request response = TextResponse(url=request.url, request=request) self.crawler.engine.scraper.enqueue_scrape(request=request, response=response, spider=self)
def parse_redirection_from_dropped_request(self, response): ... yield item
如果您遇到相同的问题,希望对您有帮助。