我编写了一个简单的抓取工具。 在settings.py文件中,通过引用scrapy文档,我使用了
DUPEFILTER_CLASS = 'scrapy.dupefilter.RFPDupeFilter'
如果我停止抓取工具并再次重新启动抓取工具,则会再次抓取重复的网址。 我做错了吗?
答案 0 :(得分:24)
我相信你所寻找的是“持久性支持”,暂停和恢复抓取。
要启用它,您可以执行以下操作:
scrapy crawl somespider -s JOBDIR=crawls/somespider-1
您可以详细了解here。
答案 1 :(得分:7)
根据documentation,默认情况下DUPEFILTER_CLASS
已设置为scrapy.dupefilter.RFPDupeFilter
。
RFPDupeFilter
无效 - 只有在实际抓取时才有效,可帮助您避免抓取重复的网址。
您似乎需要根据RFPDupeFilter
创建自己的自定义过滤器,就像在此处完成的那样:how to filter duplicate requests based on url in scrapy。如果您希望过滤器在scrapy爬网会话之间工作,则应将已爬网URL列表保留在数据库或csv文件中。
希望有所帮助。
答案 2 :(得分:0)
您可以使用像scrapy-redis这样的Redis重写计划程序,然后在重新运行项目时可以避免重复的网址抓取。