我需要一个解决方案来将SecondSpider
的每个项目与FirstSpider
的所有项目进行比较。看看这个虚拟代码。
class FirstSpider(Spider):
all_items = []
def parse(self, response):
trs = response.xpath("table tr")
for tr in trs:
item = SomeItem()
item["one"] = "one"
yield item
class SecondSpider(Spider):
def parse(self, response):
trs = response.xpath("table tr")
for tr in trs:
item = SomeItem()
item["one"] = "one"
if item in FirstSpider.all_items:
yield item
谢谢!
答案 0 :(得分:1)
我假设您的蜘蛛一个接一个地运行:FirstSpider
收集所有数据,然后运行SecondSpider
。在这种情况下,一种解决方案是将FirstSpider
返回的所有项目保存到临时文件,然后在初始化SecondSpider
时将其读入。在这种情况下,您可以在本地访问所有数据,并可以对其进行过滤。
或者,您可以创建一个项目管道,用于从FirstSpider
加载导出的项目,并对SecondSpider
返回的项目进行过滤。