我正在学习Scrapy网络爬行框架 默认情况下,它不会抓取scrapy已经抓取过的重复网址或网址。
如何让Scrapy抓取已经抓取过的重复网址或网址? 我试图在互联网上找到但却找不到相关的帮助。
我从Scrapy - Spider crawls duplicate urls找到了DUPEFILTER_CLASS = RFPDupeFilter
和SgmlLinkExtractor
,但这个问题与我正在寻找的问题相反
答案 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',
}