13

我正在使用scrapy来抓取不同的站点,对于每个站点我都有一个项目(提取了不同的信息)

好吧,例如我有一个通用管道(大部分信息是相同的),但现在我正在抓取一些谷歌搜索响应,并且管道必须不同。

例如:

GenericItem用途GenericPipeline

但是GoogleItem用途GoogleItemPipeline,但是当蜘蛛爬行时,它会尝试使用GenericPipeline而不是GoogleItemPipeline......我如何指定谷歌蜘蛛必须使用哪个管道?

4

1 回答 1

16

现在只有一种方法 - 检查管道中的项目类型并处理它或“按原样”返回

管道.py

from grabbers.items import FeedItem

class StoreFeedPost(object):

    def process_item(self, domain, item):
        if isinstance(item, FeedItem):
            #process it...

        return item

项目.py

from scrapy.item import ScrapedItem

class FeedItem(ScrapedItem):
    pass
于 2009-08-25T19:54:00.957 回答