如何强制Scrapy爬取重复URL?
我正在学习Scrapy,这是一个用于网络爬虫的框架。
默认情况下,它不会爬取重复的链接或者已经爬过的链接。
我想知道怎么让Scrapy去爬取重复的链接或者已经爬过的链接。
我在网上找了很多资料,但没有找到相关的帮助。
我发现了DUPEFILTER_CLASS = RFPDupeFilter
和SgmlLinkExtractor
,这些内容来自Scrapy - Spider crawls duplicate urls,但这个问题和我想要的正好相反。
2 个回答
32
一个更优雅的解决方案是完全禁用重复过滤:
# 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',
}
60
你可能在找dont_filter=True
这个参数,它是在Request()
里用的。你可以查看这个链接了解更多信息:http://doc.scrapy.org/en/latest/topics/request-response.html#request-objects