Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Scrapy,如何为项目定义管道?_Python_Screen Scraping_Scrapy - Fatal编程技术网

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

Python Scrapy,如何为项目定义管道?,python,screen-scraping,scrapy,Python,Screen Scraping,Scrapy,我使用scrapy来抓取不同的站点,每个站点我都有一个条目(提取了不同的信息) 例如,我有一个通用的管道(大多数信息都是相同的),但现在我正在抓取一些谷歌搜索响应,管道必须不同 例如: GenericItem使用GenericPipeline 但是GoogleItem使用GoogleItemPipeline,但是当爬行器爬行时,它尝试使用GenericPipeline,而不是GoogleItemPipeline…如何指定Google爬行器必须使用的管道?现在只有一种方法-检查管道中的项目类型并处

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

例如,我有一个通用的管道(大多数信息都是相同的),但现在我正在抓取一些谷歌搜索响应,管道必须不同

例如:

GenericItem
使用
GenericPipeline


但是
GoogleItem
使用
GoogleItemPipeline
,但是当爬行器爬行时,它尝试使用
GenericPipeline
,而不是
GoogleItemPipeline
…如何指定Google爬行器必须使用的管道?

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

pipelines.py:

items.py:

from grabbers.items import FeedItem

class StoreFeedPost(object):

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

        return item
from scrapy.item import ScrapedItem

class FeedItem(ScrapedItem):
    pass