当Item在Spider中被收集之后,它将会被传递到Item Pipeline,这些Item Pipeline组件按定义的顺序处理Item。

每个Item Pipeline都是实现了简单方法的Python类,比如决定此Item是丢弃而存储。以下是item pipeline的一些典型应用:

  • 验证爬取的数据(检查item包含某些字段,比如说name字段)
  • 查重(并丢弃)
  • 将爬取结果保存到文件或者数据库中

编写item pipeline

编写item pipeline很简单,item pipiline组件是一个独立的Python类,其中process_item()方法必须实现:

import somethingclass SomethingPipeline(object):def __init__(self):    # 可选实现,做参数初始化等# doing somethingdef process_item(self, item, spider):# item (Item 对象) – 被爬取的item# spider (Spider 对象) – 爬取该item的spider# 这个方法必须实现,每个item pipeline组件都需要调用该方法,# 这个方法必须返回一个 Item 对象,被丢弃的item将不会被之后的pipeline组件所处理。return itemdef open_spider(self, spider):# spider (Spider 对象) – 被开启的spider# 可选实现,当spider被开启时,这个方法被调用。def close_spider(self, spider):# spider (Spider 对象) – 被关闭的spider# 可选实现,当spider被关闭时,这个方法被调用

完善之前的案例:

item写入JSON文件

以下pipeline将所有(从所有'spider'中)爬取到的item,存储到一个独立地items.json 文件,每行包含一个序列化为'JSON'格式的'item':

import jsonclass ItcastJsonPipeline(object):def __init__(self):self.file = open('teacher.json', 'wb')def process_item(self, item, spider):content = json.dumps(dict(item), ensure_ascii=False) + "\n"self.file.write(content)return itemdef close_spider(self, spider):self.file.close()

启用一个Item Pipeline组件

为了启用Item Pipeline组件,必须将它的类添加到 settings.py文件ITEM_PIPELINES 配置,就像下面这个例子:

# Configure item pipelines
# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {#'mySpider.pipelines.SomePipeline': 300,"mySpider.pipelines.ItcastJsonPipeline":300
}

分配给每个类的整型值,确定了他们运行的顺序,item按数字从低到高的顺序,通过pipeline,通常将这些数字定义在0-1000范围内(0-1000随意设置,数值越低,组件的优先级越高)

重新启动爬虫

将parse()方法改为4.2中最后思考中的代码,然后执行下面的命令:

scrapy crawl itcast

查看当前目录是否生成teacher.json

Python:Item Pipeline相关推荐

  1. python pipeline框架_Python爬虫从入门到放弃(十六)之 Scrapy框架中Item Pipeline用法...

    原博文 2017-07-17 16:39 − 当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的pytho ...

  2. python pipeline框架_爬虫(十六):Scrapy框架(三) Spider Middleware、Item Pipeline|python基础教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ 1. Spider Middleware Spider Middleware是介入到Scrapy的Spid ...

  3. 如何用item pipeline(管道)清洗数据

    管道是什么 Item管道(Item Pipeline): 主要负责处理有蜘蛛从网页中抽取的Item,主要任务是清洗.验证和存储数据. 当页面被蜘蛛解析后,将被发送到Item管道,并经过几个特定的次序处 ...

  4. 第45讲:哪都能存,Item Pipeline 的用法

    在前面的示例中我们已经了解了 Item Pipeline 项目管道的基本概念,本节课我们就深入详细讲解它的用法. 首先我们看看 Item Pipeline 在 Scrapy 中的架构,如图所示. 图中 ...

  5. Item Pipeline

    Item Pipeline 当Item在Spider中被收集之后,它将会被传递到Item Pipeline,这些Item Pipeline组件按定义的顺序处理Item. 每个Item Pipeline ...

  6. 玩转 Scrapy 框架 (一):Item Pipeline 的使用

    目录 一.核心方法 二.实战:获取图片(仅学习使用) 2.1 简单分析 2.2 编码 三.总结 Item Pipeline 即项目管道,调用发生在 Spider 产生 Item 之后,当 Spider ...

  7. Python Redis pipeline操作(秒杀实现)

    Python Redis pipeline操作(秒杀实现) 设想这样的一个场景,你要批量的执行一系列redis命令,例如执行100次get key,这时你要向redis请求100次+获取响应100次. ...

  8. python redis pipeline使用方法_python使用pipeline批量读写redis的方法

    用了很久的redis了.随着业务的要求越来越高.对redis的读写速度要求也越来越高.正好最近有个需求(需要在秒级取值1000+的数据),如果对于传统的单词取值,循环取值,消耗实在是大,有小伙伴可能考 ...

  9. scrapy爬虫之item pipeline保存数据

    ##简介 前面的博文我们都是使用"-o ***.josn"参数将提取的item数据输出到json文件,若不加此参数提取到的数据则不会输出.其实当Item在Spider中被收集之后, ...

最新文章

  1. 存在于实数域的微观粒子5-可分类性
  2. Boost:使用find_if()算法来检测两个向量交叉的点
  3. 中国科学院大学计算机与科学技术学院,贺思敏 - 中国科学院大学 - 计算机科学与技术学院...
  4. MVVM模式于MVP模式
  5. idea+JRebel实现项目热部署
  6. Restlet 指南
  7. android Drawable setbounds()介绍
  8. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
  9. 以非本地Administrator身份登录的客户机无法访问服务器共享文件夹,显示句柄无效。
  10. 译文: C28x Compiler Error and Warning Messages
  11. win7计算机组策略打不开,Win7系统组策略打不开怎么办?组策略被锁住了怎么处理?...
  12. 传奇单机架设图文教程
  13. Thunderboard EFR32BG22出厂历程分析
  14. 系统架构图编写(概要设计)
  15. C语言编程实例—输出指定图形
  16. 失物招领网站html源码,基于web的失物招领系统(完整源码+论文全套+教学视频)...
  17. Opengl投影变换理解
  18. 10年外资的感受和经历
  19. Ubuntu20.4安装百度云盘
  20. 校内集训安全责任书模板

热门文章

  1. HA: InfinityStones靶机渗透测试
  2. Mysql生成UUID
  3. LeetCode简单题之去掉最低工资和最高工资后的工资平均值
  4. GOF23设计模式(结构型模式)代理模式~
  5. TVM yolov3优化代码修改(编译运行OK)
  6. XGBoost4J-Spark基本原理
  7. 对端边缘云网络计算模式:透明计算、移动边缘计算、雾计算和Cloudlet
  8. 利用反射计芯片进行非接触式液位测量
  9. CentOS7环境搭建使用PhpStorm上传代码
  10. [JAVAEE] Thymeleaf 基本语法: form相关标签