如何强制scrapy爬行重复的网址?

时间:2014-04-17 10:57:13

标签: python web-crawler scrapy

我正在学习Scrapy网络爬行框架 默认情况下,它不会抓取scrapy已经抓取过的重复网址或网址。

如何让Scrapy抓取已经抓取过的重复网址或网址? 我试图在互联网上找到但却找不到相关的帮助。

我从Scrapy - Spider crawls duplicate urls找到了DUPEFILTER_CLASS = RFPDupeFilterSgmlLinkExtractor,但这个问题与我正在寻找的问题相反

2 个答案:

答案 0 :(得分:40)

您可能正在寻找dont_filter=True上的Request()参数。 见http://doc.scrapy.org/en/latest/topics/request-response.html#request-objects

答案 1 :(得分:8)

更优雅的解决方案是完全禁用重复过滤器:

# settings.py
DUPEFILTER_CLASS = 'scrapy.dupefilters.BaseDupeFilter'

这样您就不必使用dont_filter=True混乱所有的请求创建代码。另一个副作用:这只会禁用重复过滤,而不会禁用任何其他过滤器,例如异地过滤。

如果您想有选择地仅对项目中的一个或多个蜘蛛使用此设置,可以在蜘蛛实现中通过custom_settings进行设置:

class MySpider(scrapy.Spider):
    name = 'myspider'

    custom_settings = {
        'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter',
    }