避免重复的网址抓取

时间:2013-07-15 17:48:22

标签: scrapy

我编写了一个简单的抓取工具。 在settings.py文件中,通过引用scrapy文档,我使用了

DUPEFILTER_CLASS = 'scrapy.dupefilter.RFPDupeFilter'

如果我停止抓取工具并再次重新启动抓取工具,则会再次抓取重复的网址。 我做错了吗?

3 个答案:

答案 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重写计划程序,然后在重新运行项目时可以避免重复的网址抓取