Scrapy框架的学习(3.pipeline介绍以及多个爬虫的pipeline的使用)

上个博客最后面写到了,pipeline的简单使用以及参数的配置含义:https://blog.csdn.net/wei18791957243/article/details/86157707

 

1.从pipeline的字典形式可以看出来,pipeline可以有多个,而且确实pipeline能够定义多个

    

2. 有多个爬虫,pipeline是怎样处理的呢?

    首先创建三个爬虫 : 例如: 在一个scrapy的项目里面爬取三个网站: 今日头条、新浪、豆瓣

     在cmd里面分别创建三个爬虫:

    

  然后打开pycharm查看:

                   就会看见有三个爬虫

(1)使用pipeline处理的第一个方式可以给item加上键和响应的值:

       分别再相对的爬虫py里面,的parse方法里面加上相应的键和值

"""对应的toutiao.py"""
def parse(self, response):
    item = {}
    item["come_from"] = "toutiao"
    pass

"""对应的sina.py"""
def parse(self, response):
    item = {}
    item["come_from"] = "sina"
    pass

"""对应的douban.py"""
def parse(self, response):
    item = {}
    item["come_from"] = "douban"
    pass

       然后pipelines.py  在 process_item方法里面可以对值进行相应的操作,分别进行判断

class PipelinetestPipeline(object):
    def process_item(self, item, spider):
        if item["come_from"] == "toutiao":
            pass
        elif item["come_from"] == "sina":
            pass
        else:
            pass
        return item
   也可以写多个类的形式进行:
class PipelinetestPipeline(object):
    def process_item(self, item, spider):
        if item["come_from"] == "toutiao":
            pass
        return item


class PipelinetestPipeline2(object):
    def process_item(self, item, spider):
        if item["come_from"] == "sina":
            pass
        return item


class PipelinetestPipeline3(object):
    def process_item(self, item, spider):
        if item["come_from"] == "douban":
            pass

(2) 除了给item加上键和值,还有第二方式,  spider.name 来进行判断,就不用给item加键和值

class PipelinetestPipeline(object):
    def process_item(self, item, spider):
        if spider.name == "toutiao":
            pass
        elif spider.name == "sina":
            pass
        else:
            pass
        return item

  每个爬虫的类里面都有对应的name属性,也就是对应的每个爬虫的名字,所以可以利用这个属性来进行判断

  然后在pipeline里面进行相应的处理

3.  对有多个爬虫时,pipeline通过上面的中方式进行处理,

   一种方式是给item加上键和值,一种方式是里面name属性

  分别对值或者爬虫的名字进行判断,进而对数据进行处理

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是那个同伟伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值