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系统是否可以使重复过滤器持久保存在其目录中。实现重复过滤器的方法非常简单,我对此表示怀疑。