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

Alo*_*hor 20 python web-crawler scrapy

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

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

我发现DUPEFILTER_CLASS = RFPDupeFilterSgmlLinkExtractorScrapy - Spider爬行重复的网址,但这个问题与我正在寻找的相反

pau*_*rth 40

你可能正在寻找这个dont_filter=True论点Request().请参阅http://doc.scrapy.org/en/latest/topics/request-response.html#request-objects

  • 但这也会禁用其他过滤器,例如异地 (2认同)

Don*_*ons 12

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

# settings.py
DUPEFILTER_CLASS = 'scrapy.dupefilters.BaseDupeFilter'
Run Code Online (Sandbox Code Playgroud)

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

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

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

    custom_settings = {
        'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter',
    }
Run Code Online (Sandbox Code Playgroud)