2015-07-11 139 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返回的項目進行過濾。