2015-07-11 136 views
1

我需要一个解决方案来比较SecondSpider的每个项目与FirstSpider的所有项目。看看这个虚拟代码。如何比较每个Scrapy蜘蛛项目与另一个Scrapy蜘蛛项目?

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

写每个单独的文件并使用实用程序'diff'?否则,您可能需要包含小样本输入和基于这些输入的所需输出。祝你好运。 – shellter

回答

1

我假设你的蜘蛛依次运行:FirstSpider收集所有数据,然后运行SecondSpider。在这种情况下,一种解决方案是将由FirstSpider返回的所有项目保存为临时文件,然后在初始化SecondSpider时读取它。在这种情况下,您可以在本地访问所有数据并进行筛选。

或者,您可以创建一个项目管道,该管道从FirstSpider加载导出的项目,并对由SecondSpider返回的项目进行过滤。