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 之类的方法会自动执行吗?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值