15

我编写了一个简单的爬虫。在 settings.py 文件中,通过参考scrapy文档,我使用了

DUPEFILTER_CLASS = 'scrapy.dupefilter.RFPDupeFilter'

如果我停止爬虫并再次重新启动爬虫,它会再次抓取重复的网址。难道我做错了什么?

4

3 回答 3

28

我相信您正在寻找的是“持久性支持”,以暂停和恢复爬行。

要启用它,您可以执行以下操作:

scrapy crawl somespider -s JOBDIR=crawls/somespider-1

你可以在这里阅读更多关于它的信息。

于 2014-01-25T00:07:17.073 回答
7

根据文档,默认情况下DUPEFILTER_CLASS已设置为scrapy.dupefilter.RFPDupeFilter

RFPDupeFilter如果您停止爬虫并没有帮助 - 它仅在实际爬网时起作用,可以帮助您避免抓取重复的网址。

看起来您需要创建自己的基于 的自定义过滤器RFPDupeFilter,就像在这里完成的那样:如何根据 scrapy 中的 url 过滤重复请求。如果您希望您的过滤器在抓取会话之间工作,您应该将已抓取的 url 列表保存在数据库或 csv 文件中的某个位置。

希望有帮助。

于 2013-07-15T19:37:58.387 回答
0

您可以使用像scrapy-redis这样的 Redis 重写调度程序,然后您可以在重新运行项目时避免重复的 URL 抓取。

于 2016-10-28T15:06:30.743 回答