Scrapy 如何在Spider中访问'request_seen()'?
我有一个蜘蛛,我想检查我要安排的请求是否已经存在 我不希望任何方法检查下载/蜘蛛中间件内部,我只想检查蜘蛛内部Scrapy 如何在Spider中访问'request_seen()'?,scrapy,scrapy-spider,Scrapy,Scrapy Spider,我有一个蜘蛛,我想检查我要安排的请求是否已经存在 我不希望任何方法检查下载/蜘蛛中间件内部,我只想检查蜘蛛内部 有什么方法可以调用该方法吗?我用管道做了类似于您的方法。下面的命令是我使用的代码 您应该指定一个标识符,然后使用它检查是否可以看到它 class SeenPipeline(object): def __init__(self): self.isbns_seen = set() def process_item(self, item, spider):
有什么方法可以调用该方法吗?我用管道做了类似于您的方法。下面的命令是我使用的代码 您应该指定一个标识符,然后使用它检查是否可以看到它
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
注意:您也可以在spider中使用这些代码我使用管道做了类似的事情。下面的命令是我使用的代码 您应该指定一个标识符,然后使用它检查是否可以看到它
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
注意:您也可以在spider中使用这些代码您应该能够从spider访问dupe筛选器本身,如下所示:
self.dupefilter=self.crawler.engine.slot.scheduler.df
然后您可以在其他地方使用它来检查:
req=scrapy.Request('whatever')
如果看到self.dupefilter.request(请求):
#已经看过了
通过
其他:
#我从来没见过这个
通过
您应该能够通过爬行器访问dupe筛选器本身,如下所示:
self.dupefilter=self.crawler.engine.slot.scheduler.df
然后您可以在其他地方使用它来检查:
req=scrapy.Request('whatever')
如果看到self.dupefilter.request(请求):
#已经看过了
通过
其他:
#我从来没见过这个
通过
这是手动方法,我想访问Spider中scrapy的默认request\u seen()
方法这是手动方法,我想访问Spider中scrapy的默认request\u seen()
方法