如何比较每个Scrapy蜘蛛项目与另一个Scrapy蜘蛛项目?

时间:2015-07-11 13:32:52

标签: python web-scraping scrapy scrapy-spider

我需要一个解决方案来将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

谢谢!

1 个答案:

答案 0 :(得分:1)

我假设您的蜘蛛一个接一个地运行:FirstSpider收集所有数据,然后运行SecondSpider。在这种情况下,一种解决方案是将FirstSpider返回的所有项目保存到临时文件,然后在初始化SecondSpider时将其读入。在这种情况下,您可以在本地访问所有数据,并可以对其进行过滤。

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