答案 0 :(得分:2)
您应该能够像蜘蛛一样从蜘蛛中访问欺骗过滤器:
self.dupefilter = self.crawler.engine.slot.scheduler.df
然后您可以在其他地方使用它来检查:
req = scrapy.Request('whatever')
if self.dupefilter.request_seen(req):
# it's already been seen
pass
else:
# never saw this one coming
pass
答案 1 :(得分:0)
我用管道做了类似你的事情。以下命令是我使用的代码。
您应该指定一个标识符,然后使用它来检查它是否被查看。
class SeenPipeline(object):
def __init__(self):
self.isbns_seen = set()
def process_item(self, item, spider):
if item['isbn'] in self.isbns_seen:
raise DropItem("Duplicate item found : %s" %item)
else:
self.isbns_seen.add(item['isbn'])
return item
注意:您也可以在蜘蛛中使用这些代码