如何在Scrapy中忽略已爬网的URL

时间:2013-12-06 02:53:28

标签: python django web-crawler scrapy

我有一个看起来像这样的抓取工具:

def parse:
      .......
      ........
      Yield(Request(url=nextUrl,callback=self.parse2))

def parse2:
      .......
      ........
      Yield(Request(url=nextUrl,callback=self.parse3))

def parse3:
      .......
      ........

我想添加一个规则,其中我想忽略一个URL在调用函数parse2时是否已被爬行,但保留了parse3的规则。我仍然在探索requests.seen文件,看看我是否可以操作它。

2 个答案:

答案 0 :(得分:2)

您可以在 settings.py 中设置规则。请参阅文档dupefilter-class

  

默认值:'scrapy.dupefilter.RFPDupeFilter'

     

用于检测和过滤重复请求的类。

     

使用scrapy.utils.request.request_fingerprint函数根据请求指纹过滤默认(RFPDupeFilter)。

答案 1 :(得分:1)

http://doc.scrapy.org/en/latest/topics/request-response.html

查看dont_filter请求参数
  

dont_filter(boolean) - 表示调度程序不应过滤此请求。当您想要多次执行相同的请求时,可以使用此选项来忽略重复过滤器。小心使用它,否则您将进入爬行循环。默认为False。