scrapy 两类item_Scrapy关于不同item交由不同pipeline处理

问题描述

如何根据不同的item选择不同的pipeline处理

问题出现的环境背景及自己尝试过哪些方法

一个scrapy中具有多个爬虫项目,并且每个爬虫项目又有不同的item,在网上查找的结果是对接收的item进行类型判断然后执行不同的代码,我希望在判断后去调用对应的pipeline函数,比如item a 就交 pipeline a 去处理。

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

from items import AspiderItem, BspiderItem, CspiderItem

class myspiderPipeline(object):

def init(self):

pass

def process_item(self, item, spider):

if isinstance(item, AspiderItem):

pass

elif isinstance(item, BspiderItem):

return item

elif isinstance(item, CspiderItem):

print item

return item

class AspiderPipeline(myspiderPipeline):

def init(self):

self.file = open(‘myadata.json’, ‘wb’)

def process_item(self, item, spider):

content = json.dumps(dict(item), ensure_ascii=False) + “\n”

self.file.write(content)

return item

def close_spider(self, spider):

self.file.close()

class BspiderPipeline(myspiderPipeline):

pass

你期待的结果是什么?实际看到的错误信息又是什么?

我想知道在item类型判断之后该如何去调用对应的 pipeline ?,是实例化对应的类然后调用 process_item 方法吗? 如果是,那么这个类的 close_spider 之类的方法会自动执行吗?

Original: https://blog.csdn.net/weixin_36071439/article/details/113021927
Author: 猕猴桃学长
Title: scrapy 两类item_Scrapy关于不同item交由不同pipeline处理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/790718/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球