我需要一个解决方案来比较每个项目的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谢谢!
发布于 2015-07-13 14:13:12
我假设您的爬行器一个接一个地运行:FirstSpider收集所有数据,然后您运行SecondSpider。在这种情况下,一种解决方案是将FirstSpider返回的所有项保存到一个临时文件中,然后在初始化SecondSpider时读取该文件。在这种情况下,您可以在本地访问所有数据,并可以对其进行筛选。
或者,您可以创建一个项目管道,该管道从FirstSpider加载导出的项目,并对SecondSpider返回的项目进行过滤。
https://stackoverflow.com/questions/31357693
复制相似问题