Python Scrapy,如何为一个项目定义管道?
我正在使用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