Python Scrapy , как определить конвейер для элемента?

StackOverflow https://stackoverflow.com/questions/1056651

  •  20-08-2019
  •  | 
  •  

Вопрос

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

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

Например:

GenericItem использование GenericPipeline

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

Это было полезно?

Решение

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

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top