Python Scrapy, как определить конвейер для элемента? - PullRequest
13 голосов
/ 29 июня 2009

Я использую scrapy для сканирования разных сайтов, для каждого сайта у меня есть Предмет (извлекается разная информация)

Ну, например, у меня есть общий конвейер (большая часть информации та же самая), но сейчас я сканирую какой-то ответ поиска Google, и конвейер должен быть другим.

Например:

GenericItem использует GenericPipeline

Но GoogleItem использует GoogleItemPipeline, но когда паук сканирует, он пытается использовать GenericPipeline вместо GoogleItemPipeline .... как я могу указать, какой конвейер должен использовать Google spider?

1 Ответ

15 голосов
/ 25 августа 2009

Теперь только один способ - проверить тип элемента в конвейере и обработать его или вернуть «как есть»

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
...