如何让Scrapy打印所有重复的网址?

时间:2014-01-16 11:40:33

标签: python scrapy

我在日志中收到此消息:

2014-01-16 12:41:45+0100 [mybot] DEBUG: Filtered duplicate request: <GET https://mydomain/someurl> - no more duplicates will be shown (see DUPEFILTER_CLASS)

使用Request()请求url,并且它在第一次请求时表示它是重复的。我不知道是什么原因造成的。我该怎么做才能调试这个?如何打印它正在过滤的所有重复网址?

2 个答案:

答案 0 :(得分:0)

您可能需要创建自己的DupeFilter

from scrapy.dupefilter import RFPDupeFilter

class VerboseRFPDupeFilter(RFPDupeFilter):

    def log(self, request, spider):
        fmt = "Filtered duplicate request: %(request)s"
        log.msg(format=fmt, request=request, level=log.DEBUG, spider=spider)

并将DUPEFILTER_CLASS设置为此新类(http://doc.scrapy.org/en/latest/topics/settings.html#dupefilter-class

答案 1 :(得分:0)

使用curl -v URL尝试确切网址,看看标题是否包含301或302.或者您可以尝试scrapy shell URL

我看到一些网站在参数不是相同的顺序或预期的字母大小写时重定向到同一页面。在比较两个请求对象时,Scrapy不考虑参数的顺序或字母大小写。