from scrapy.exceptions import DropItem
class DuplicatesPipeline(object):
def __init__(self):
self.ids_seen = set()
def process_item(self, item, spider):
if item['id'] in self.ids_seen:
raise DropItem("Duplicate item found: %s" % item)
else:
self.ids_seen.add(item['id'])
return item
以上代码来自Scrapy官方网站:http://doc.scrapy.org/en/latest/topics/item-pipeline.html 用于过滤重复项。
根据Scrapy文档的建议,http://doc.scrapy.org/en/latest/topics/jobs.html 要暂停和恢复蜘蛛,我需要使用Jobs系统。
所以我很好奇Scrapy Jobs系统是否可以使重复过滤器持久保存在其目录中。实现重复过滤器的方法非常简单,我对此表示怀疑。
答案 0 :(得分:0)
您只需要实现管道,以便它读取JOBDIR
设置,并在定义该设置后读取您的管道:
从self.ids_seen
目录内的某个文件读取JOBDIR
的初始值。
在运行时,它将新文件更新为该文件。