Python Scrapy,如何为一个项目定义管道?

13 投票
1 回答
5831 浏览
提问于 2025-04-15 12:33

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

比如说,我有一个通用的处理流程(大部分信息是一样的),但现在我在抓取一些谷歌搜索的结果,这个处理流程就必须不同了。

举个例子:

GenericItem使用的是GenericPipeline

但是GoogleItem使用的是GoogleItemPipeline,可是当爬虫在抓取的时候,它却试图使用GenericPipeline而不是GoogleItemPipeline……我该怎么指定谷歌爬虫要用哪个处理流程呢?

1 个回答

16

现在只有一种方法 - 在处理过程中检查项目类型,然后进行处理,或者直接返回原样。

pipelines.py:

from grabbers.items import FeedItem

class StoreFeedPost(object):

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

        return item

items.py:

from scrapy.item import ScrapedItem

class FeedItem(ScrapedItem):
    pass

撰写回答