Python:Scrapy框架中Item Pipeline组件(项目管道组件)的使用教程

第五章 使用Item Pipeline处理数据 在Scrapy中,Item Pipeline 是处理数据的组件,通常只负责一种功能的数据处理,在一个项目中可以同时启用多个Item Pipeline,它们按指定次序级联起来,形成一条数据处理流水线. Item Pipeline的几种典型应用: - 清洗数据 - 验证数据的有效性 - 过滤掉重复的数据 - 将数据存入数据库 1. Item Pipeline 在之前的example项 阅读详情

Item Pipeline简介

Item管道的主要责任是负责处理有蜘蛛从网页中抽取的Item,他的主要任务是清晰、验证和存储数据。
当页面被蜘蛛解析后,将被发送到Item管道,并经过几个特定的次序处理数据。
每个Item管道的组件都是有一个简单的方法组成的Python类。
他们获取了Item并执行他们的方法,同时他们还需要确定的是是否需要在Item管道中继续执行下一步或是直接丢弃掉不处理。

Item管道通常执行的过程有

  • 清理HTML数据
  • 验证解析到的数据(检查Item是否包含必要的字段)
  • 检查是否是重复数据(如果重复就删除)
  • 将解析到的数据存储到数据库中

编写自己的Item Pipeline

编写item管道其实是很容易的。
每个Item管道的组件都是由一个简单的方法组成的Python类:

process_item(item, spider)

每一个item管道组件都会调用该方法,并且必须返回一个item对象实例或raise DropItem异常。
被丢掉的item将不会在管道组件进行执行
此外,我们也可以在类中实现以下方法

open_spider(spider)

当spider执行的时候将调用该方法

close_spider(spider)

当spider关闭的时候将调用该方法

Item Pipeline例子

代码如下:
from scrapy.exceptions import DropItem

class PricePipeline(object):

    vat_factor = 1.15

    def process_item(self, item, spider):
        if item['price']:
            if item['price_excludes_vat']:
                item['price'] = item['price'] * self.vat_factor
            return item
        else:
            raise DropItem("Missing price in %s" % item)
注:VAT:Value Added Tax(增值税)
以上代码可以过滤那些没有价格的产品,并且对那些不包括增值税产品的价格进行调整

将抓取的items以json格式保存到文件中

从spider抓取到的items将被序列化为json格式,并且以每行一个item的形式被写入到items.jl文件中
代码:
import json

class JsonWriterPipeline(object):

    def __init__(self):
        self.file = open('items.jl', 'wb')

    def process_item(self, item, spider):
        line = json.dumps(dict(item)) + "\n"
        self.file.write(line)
        return item
注:JsonWriterPipeline的目的是介绍如何编写项目管道。如果想要保存抓取的items到json文件中,推荐使用 Feed exports

删除重复项

假设在spider中提取到的item有重复的id,那么我们就可以在process_item函数中进行过滤
如:
from scrapy.exceptions import DropItem

class DuplicatesPipeline(object):

    def __init__(self):
        self.ids_seen = set()

    def process_item(self, item, spider):
        if item['id'] in self.ids_seen:
            raise DropItem("Duplicate item found: %s" % item)
        else:
            self.ids_seen.add(item['id'])
            return item

激活Item Pipeline组件

在settings.py文件中,往ITEM_PIPELINES中添加项目管道的类名,就可以激活项目管道组件
如:
ITEM_PIPELINES = {
    'myproject.pipeline.PricePipeline': 300,
    'myproject.pipeline.JsonWriterPipeline': 800,
}
The integer values you assign to classes in this setting determine the order they run in- items go through pipelines from order number low to high

整数值通常设置在0-1000之间

作者:曾是土木人(http://blog.youkuaiyun.com/php_fly)

原文地址:http://blog.youkuaiyun.com/php_fly/article/details/19571121

原文地址: Item Pipeline
Python爬虫实战:Scrapy框架从入门到精通(附完整项目源码) 本文是"Python爬虫实战系列"的第七篇。在前面Requests/BeautifulSoup、Selenium、Playwright的基础上,本文介绍Scrapy框架——Python最强大的爬虫框架,适用于中大规模数据采集项目。从零搭建一个完整的Scrapy项目,包含Spider、Pipeline、Middleware全组件。 阅读详情

相关推荐

STM32驱动四位共阳极数码管实现高精度秒表计时器

本文详细介绍了如何使用STM32驱动四位共阳极数码管实现高精度秒表计时器。项目基于STM32F103C8T6最小系统板,通过定时器中断和GPIO控制,实现0.1秒精度的计时功能,并解析了共阳极数码管的动态扫描原理及按键消抖等关键技术。

n8m7b6v5c4的博客 951

Scrapy框架(四):Item Pipeline的用法

当Spider解析完Response之后,Item就会传递到Item Pipeline,被定义的Item Pipeline组件会顺次调用,完成一连串的处理过程。 1.核心方法 process_item(item,spider) 这个是必须要实现的方法,被定义的Item Pipeline会默认调用这个方法对Item进行处理。 open_spider(spider) 这个方法是在Spider...

Mai_Dreizehn的博客 424

Apache Hop集成Spring Boot实战:从配置到执行HPL文件

本文详细介绍了将Apache Hop集成到Spring Boot应用中的完整实战方案。通过配置核心依赖、初始化Hop环境、编写服务层逻辑,实现了在Java应用中程序化执行HPL管道文件,从而将可视化ETL能力无缝嵌入微服务架构,提升数据处理的自动化与可维护性。

blue42的博客 477

解析Python网络爬虫:核心技术、Scrapy框架、分布式爬虫(期末重点题目)

Requests是在urllib的基础上进行了高度的封装,它不仅继承了urllib的所有特性,而且还支持一些其他的特性。聚焦爬虫需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接,并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。通用爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。

weixin_49680811的博客 4020

西门子S7-1200与汇川SV660P伺服速度模式实战:从接线到编程全流程

本文详细解析了西门子S7-1200 PLC与汇川SV660P伺服驱动器在速度模式下的集成实战。内容涵盖从硬件接线、伺服参数关键设置(如电子齿轮比)、博图软件组态到PLC编程的全流程,并提供了故障排查与性能优化指南,帮助工程师快速实现精准、稳定的运动控制。

weixin_29248313的博客 488

C++常见面试题总结

C++常见面试题总结

xu_fu_yong的专栏 8万+

Scrapy基本概念——Item Pipeline

蜘蛛抓取的每一个Item都会被发送到Item Pipeline。根据ITEM_PIPELINES的优先级设置,不同的Item Pipeline依次处理每一个Item,最后可删除该Item不做处理,也可将该Item发送到下一个Item Pipeline。Item Pipeline的主要用途有:1、清洗数据2、验证数据(检查Item某些字段是否为空)3、数据查重4、存储数据。

激情人生,美好生活 1942

人工智能(AI)简史:推动新时代的科技力量

人工智能(AI,Artificial Intelligence)是计算机科学的一个分支,旨在研究和开发可以模拟、扩展或增强人类智能的系统。它涉及多种技术和方法,包括机器学习、深度学习、自然语言处理(NLP)、计算机视觉、专家系统等。

qq_17153885的博客 1万+

[爬虫]3.4.2 Scrapy的Item, Spider, Pipeline等组件

Scrapy框架由多个互相协作的组件构成。本节将详细介绍其中的几个主要组件:Item, Spider, Pipeline。

Andy0214的专栏 5195

2024.12.29 【RNA-seq】Rawdata数据缺失问题与解决方案

Fastq格式是一种用于存储高通量测序数据的文件格式,包含序列和相应的质量信息。第一行以开头,后接序列标识符;第二行是测序的DNA序列;第三行以开头,可能会跟随序列标识符;第四行是对应的质量值,以ASCII字符表示。Rawdata的数据完整性通常情况下是没有问题的,但我们仍然需要对下机数据进行验证,确保后续分析的正常进行,好的分析习惯可以提高整体的分析效率,避免很多不必要的麻烦。

1113

C# 上位机之海康工业相机开发(SDK)实战教程

海康工业相机的C#开发核心是基于MVS SDK的“初始化→枚举→连接→采集→释放”流程,其中图像回调处理和格式转换是关键。严格按照SDK文档处理设备类型(网口/USB)和像素格式;及时释放图像资源,避免内存泄漏;错误码是排查问题的重要依据(可参考SDK中的“错误码说明”文档)。掌握这些基础后,可结合机器视觉算法(如OpenCV)实现缺陷检测、尺寸测量等高级功能,构建完整的工业视觉系统。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3833

爬虫框架 Scrapy 详解

Scrapy是适用于Python的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。Scrapy是一个框架,可以根据需求进行定制。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。...

m0_67403076的博客 1万+

《网络安全自学教程》- 802.1x协议

802.1x协议架构,工作原理/认证流程,认证方式,MAB认证,触发认证的三种方式,EAP报文格式,EAPOL报文格式

wangyuxiang946的博客 2万+

python scrapy框架基如何实现多线程_python爬虫 scrapy爬虫框架的基本使用

文章目录一、scrapy爬虫框架介绍在编写爬虫的时候,如果我们使用 requests、aiohttp 等库,需要从头至尾把爬虫完整地实现一遍,比如说异常处理、爬取调度等,如果写的多了,的确会比较麻烦。利用现有的爬虫框架,可以提高编写爬虫的效率,而说到 Python 的爬虫框架,Scrapy 当之无愧是最流行最强大的爬虫框架了。scrapy介绍Scrapy 是一个基于 Twisted 的异步处理框架...

weixin_39946300的博客 1225

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

开源 Python网络爬虫框架 Scrapy

开源 Python 网络爬虫框架 Scrapy:http://blog.youkuaiyun.com/zbyufei/article/details/7554322 介绍 所谓网络爬虫,就是一个在网上到处或定向抓取数据的程序,当然,这种说法不够专业,更专业的描述就是,抓取特定网站网页的HTML数据。不过由于一个网站的网页很多,而我们又不可能事先知道所有网页的UR...

墨鱼菜鸡 956

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Scrapy框架

一、Scrapy概述 Scrapy 是一个为了抓取网页数据、提取结构性数据而编写的应用框架,该框架是封装的,包含 request (异步调度和处理)、下载器(多线程的 Downloader)、解析器(selector)和 twisted(异步处理)等。对于网站的内容爬取,其速度非常快捷。 二、Scrapy五大基本构成: Scrapy框架主要由五大组件组成,它们分别是调度器(Scheduler)、下载器(Downloader)、爬虫(Spider)和实体管道(Item Pipeline)、...

m0_60704770的博客 1123

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【Python爬虫开发基础⑭】Scrapy架构(组件介绍、架构组成和工作原理)

Scrapy 是一个用于爬取网站数据和执行抓取任务的Python框架。它提供了一系列的组件,用于构建和管理爬虫项目。Spider(爬虫)Spider 是 Scrapy 的最基本组件,用于定义如何抓取特定网站的数据。每一个 Spider 都包含了一些用于抓取站点的初始URL和如何跟进页面中的链接的规则。Spider 通过解析页面的内容来抓取所需的数据。Item(数据项)Item 用于定义要从网页中提取的结构化数据。你可以根据需要创建多个 Item,每个 Item 包含了一组字段,用于保存特定的数据。

z135733的博客 3350

python全系列之爬虫scrapy_Python爬虫系列教程07之初识Scrapy爬虫框架

配套视频教程概览在具体的学习scrapy之前,我们先对scrapy的架构做一个简单的了解,之后所有的内容都是基于此架构实现的,在初学阶段只需要简单的了解即可,之后的学习中,你会对此架构有更深的理解。下面是scrapy官网给出的最新的架构图示。###基本组件引擎(Engine)引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。 详细内容查看下面的数据流(Data Flow)部分。...

weixin_39558391的博客 238

Python爬虫框架Scrapy——《Python爬虫框架Scrapy》

在项目中创建一个或多个爬虫,定义要抓取的URL、提取数据的规则等。Scrapy允许开发者创建自定义的命令和扩展,以添加新的功能或修改现有功能。通过编写自定义命令,开发者可以添加新的爬取逻辑或数据处理流程。而扩展则提供了一种更通用的方式,用于添加全局功能或修改Scrapy的默认行为。Scrapy作为一个功能强大的Python爬虫框架,提供了丰富的组件和高级特性,使得爬虫开发变得更加简单、高效和灵活。

Python老吕的博客 1356

【scrapy】Item Pipeline

After an item has been scraped by a spider,it is sent to the Item Pipeline which process it through several components that are executed sequentially. Each item pipeline component is a single python ...

weixin_30883777的博客 62

Python爬虫从入门到精通(七)Scrapy框架

目录 前言 一、什么是Scrapy 二、怎么安装使用Scrapy 前言 在了解了爬虫各种基础知识之后,我们有时需要快速搭建一个个爬虫的程序。有没有这么一个方便的工具或框架能让我们快速搭建起一个个爬虫程序呢?Scrapy呼之欲出。 一、什么是Scrapy 纯Python实现的一个为了爬取网站数据,提取结构性数据而编写的应用框架。框架本身把一些重复性的工作给你做好了;你就可以轻轻松松的按照其框架本身写几个简单的模块或者简单的扩展一些模块就可以你个性化的功能;当然带来的问题是首先你要学习了解框架,还

zhulin1028的博客 1009

Scrapy入门

简介   Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。   Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。   Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列、入队、触发事件,当引擎需要时..

Z645817的博客 316

python爬虫之scrapy框架

什么是scrapy Scrapy 是用 Python 实现的一个为了爬取网站数据、提取结构性数据而编写的应用框架。 Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。 通常我们可以很简单的通过 Scrapy 框架实现一个爬虫,抓取指定网站的内容或图片。 scrapy五大部件 Scrapy Engine(引擎): 用来处理整个系统不同模块之间的数据,信号传递。(框架核心) Scheduler(调度器): 用来接收引擎发过来的request请求,压入队列中,并在引擎

qq_53221728的博客 1752

scrapy认识

scrapy的认识1.scrapy的概念及流程2.scrapy框架的作用-少量的代码,快速的爬取3.scrapy的工作流程 1.scrapy的概念及流程 scrapy是一个Python编写的开源网络爬虫框架,它是一个被设计用于爬取网络数据,提取结构性数据的框架 scrapy 使用了Twisted异步网络框架,可以加快下载速度 scrapy文档 2.scrapy框架的作用-少量的代码,快速的爬取 3.scrapy的工作流程 爬虫流程 资源定位 url 发起请求,获取响应 response 解析数据 l

qq_43734041的博客 736

一、Scrapy简介

1、简介 (1)Scrapy是用纯python实现的,一个为了爬取网站数据、提取结构性数据而编写的应用框架。 (2)框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片。 (3)Scrapy使用了Twisted(其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己取实现异步框架,并且包含了各种中间件接口,可以灵活的完成各...

Norni的博客 580

终于有人把Scrapy爬虫框架讲明白了

导读:Scrapy由Python语言编写,是一个快速、高层次的屏幕抓取和Web抓取框架,用于抓取Web站点并从页面中提取出结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化...

华章IT官方博客 474
上一篇: Python:Scrapy Shell的使用教程
下一篇: Python:Scrapy保存控制台信息到文本
曾是土木人
博客等级 码龄15年 67粉丝 29原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值