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()
方法