问题描述
如何根据不同的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/
转载文章受原作者版权保护。转载请注明原作者出处!