首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >爬虫课堂(二十)|编写Spider之使用Item Pipeline处理数据

爬虫课堂(二十)|编写Spider之使用Item Pipeline处理数据

作者头像
黄小怪
发布于 2018-05-21 09:34:03
发布于 2018-05-21 09:34:03
66300
代码可运行
举报
文章被收录于专栏:小怪聊职场小怪聊职场
运行总次数:0
代码可运行

在前面的章节中,讲解了提取数据和使用Item封装数据,接下来讲解如何处理爬取到的数据。 在Scrapy框架中,Item Pipeline是处理数据的组件,如下图20-1所示,当Item在Spider中被收集之后,将会被传递到Item Pipeline,每一个组件会按照一定的顺序执行对Item的处理。

图20-1

每个Item Pipeline是实现了简单方法的Python类。他们接收到Item并通过它执行一些行为,同时也决定此Item是否继续通过pipeline,或是被丢弃而不再进行处理。 以下是Item Pipeline的一些典型应用:

  • 清理HTML数据。
  • 验证爬取的数据(检查item包含某些字段)。
  • 查重(并丢弃)。
  • 将爬取结果保存到数据库或者文件中。

一、编写Item Pipeline类 编写Item Pipeline很简单,每个Item Pipeline组件是一个独立的Python类,同时必须实现process_item方法:

  • process_item(item, spider) 每个item pipeline组件都需要调用该方法,这个方法必须返回一个 Item (或任何继承类)对象, 或是抛出 DropItem 异常,被丢弃的item将不会被之后的pipeline组件所处理。 参数: item (Item 对象) – 被爬取的item spider (Spider 对象) – 爬取该item的spider

也可以实现以下两个方法:

  • open_spider(spider) 当spider被开启时,这个方法被调用。 参数: spider (Spider 对象) – 被开启的spider
  • close_spider(spider) 当spider被关闭时,这个方法被调用 参数: spider (Spider 对象) – 被关闭的spider 1、将爬取结果保存到数据库或者文件中 在创建一个Scrapy项目时,会自动生成一个pipelines.py文件,它用来放置用户自定义的Item Pipeline,在tutorial项目的pipelines.py中实现DataSubmitJsonFilePipeline,代码如下:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import json

# 调用scrapy提供的json export把item写入JSON文件
class DataSubmitJsonFilePipeline(object):
----def __init__(self):
--------self.file = open('jianshuArticle.json', 'wb')

# 把item写入JSON文件
----def process_item(self, item, spider):
--------line = json.dumps(dict(item)) + "\n"
--------self.file.write(line)
--------return item

----def close_spider(self, spider):
--------self.file.close()

2、查重(并丢弃)3、验证爬取的数据(检查item包含某些字段)4、清理HTML数据二、启用一个Item Pipeline组件 在Scrapy框架中,Item Pipeline是可选的组件,可以选择性启用某个或某些Item Pipeline。为了启用一个Item Pipeline组件,必须将它的类添加配置文件settings.py的 ITEM_PIPELINES中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Configure item pipelines
# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {
# tutorial是项目名,DataSubmitJsonFilePipeline是pipelines.py中处理item的类名
----'tutorial.pipelines.DataSubmitJsonFilePipeline': 1,
}

分配给每个类的整型值,确定了它们运行的顺序,item按数字从低到高的顺序执行,这些数字一般定义在0-1000范围内。 三、settings.py、pipelines.py和Item Pipeline类协作 settings.py、pipelines.py和Item Pipeline类在项目中的协作如下图20-2、图20-3所示:

  • 在pipelines.py中编写Item Pipeline组件(类)

图20-2

  • 在settings.py中启动启用一个Item Pipeline组件(类)

图20-3

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.03.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
二、Item Pipeline和Spider-----基于scrapy取校花网的信息 编写item pipeline
Item Pipeline 当Item在Spider中被收集之后,它将会被传递到Item Pipeline,这些Item Pipeline组件按定义的顺序处理Item。 每个Item Pipeline都是实现了简单方法的Python类,比如决定此Item是丢弃而存储。以下是item pipeline的一些典型应用: 验证爬取的数据(检查item包含某些字段,比如说name字段) 查重(并丢弃) 将爬取结果保存到文件或者数据库中 编写item pipeline 编写item pipeline很简单,item
酱紫安
2018/04/16
1.3K0
二、Item Pipeline和Spider-----基于scrapy取校花网的信息
		编写item pipeline
Python:Item Pipeline
当Item在Spider中被收集之后,它将会被传递到Item Pipeline,这些Item Pipeline组件按定义的顺序处理Item。
Lansonli
2021/10/09
5240
Scrapy框架之批量下载360妹纸图
0.导语1.项目初始化2.定义存储结构3.Spider核心代码4.pipeline下载及存储5.json知识
公众号guangcity
2019/09/20
5870
Scrapy框架之批量下载360妹纸图
[890]scrapy之pipeline的使用
scrapy的pipeline是一个非常重要的模块,主要作用是将return的items写入到数据库、文件等持久化模块,下面我们就简单的了解一下pipelines的用法。
周小董
2020/08/13
1.1K0
Scrapy 框架的使用之 Item Pipeline 的用法
Item Pipeline 的调用发生在 Spider 产生 Item 之后。当 Spider 解析完 Response 之后,Item 就会传递到 Item Pipeline,被定义的 Item Pipeline 组件会顺次调用,完成一连串的处理过程,比如数据清洗、存储等。
马修
2021/01/21
6770
python scrapy实战糗事百科保
编写qsbk_spider.py爬虫文件 # -*- coding: utf-8 -*- import scrapy from qsbk.items import QsbkItem from scrapy.http.response.html import HtmlResponse from scrapy.selector.unified import SelectorList class QsbkSpiderSpider(scrapy.Spider): name = 'qsbk_spider'
py3study
2020/01/20
4480
Python Scrapy框架之ItemPipeline的使用(爬虫)
当Item在Spider中被收集之后,它将会被传递到Item Pipeline,一些组件会按照一定的顺序执行对Item的处理。 每个item pipeline组件(有时称之为“Item Pipelin
Python知识大全
2020/02/13
7490
Python Scrapy框架之ItemPipeline的使用(爬虫)
Python爬虫从入门到放弃(十六)之 Scrapy框架中Item Pipeline用法
当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的python类,负责接收到item并通过它执行一些行为,
coders
2018/01/04
1.2K0
Python爬虫从入门到放弃(十六)之 Scrapy框架中Item Pipeline用法
Python 爬虫实战案例(推荐小白研究)
爬取csdn学院中的课程信息(编程语言的) 任务:爬取csdn学院中的课程信息(编程语言的) 网址:https://edu.csdn.net/courses/o280/p1 (第一页) https://edu.csdn.net/courses/o280/p2 (第二页) ① 创建项目 在命令行编写下面命令,创建项目demo scrapy startproject educsdn 项目目录结构: educsdn ├── educsdn │ ├── __init__.py │ ├── __
Python知识大全
2020/02/13
6540
Python 爬虫实战案例(推荐小白研究)
《手把手带你学爬虫──初级篇》第6课 强大的爬虫框架Scrapy
Scrapy是一个Python爬虫应用框架,爬取和处理结构性数据非常方便。使用它,只需要定制开发几个模块,就可以轻松实现一个爬虫,让爬取数据信息的工作更加简单高效。
GitOPEN
2019/01/29
1.2K0
《手把手带你学爬虫──初级篇》第6课  强大的爬虫框架Scrapy
Python网络爬虫(六)- Scrapy框架1.Scrapy2.安装和配置3.安装过程常见错误4.代码操作 - 创建一个Scrapy项目5.Scrapy框架进阶 - 深度爬虫
Scrapy Engine(Scrapy核心) 负责数据流在各个组件之间的流。Spiders(爬虫)发出Requests请求,经由Scrapy Engine(Scrapy核心) 交给Scheduler(调度器),Downloader(下载器)Scheduler(调度器) 获得Requests请求,然后根据Requests请求,从网络下载数据。Downloader(下载器)的Responses响应再传递给Spiders进行分析。根据需求提取出Items,交给Item Pipeline进行下载。Spiders和Item Pipeline是需要用户根据响应的需求进行编写的。除此之外,还有两个中间件,Downloaders Mddlewares和Spider Middlewares,这两个中间件为用户提供方面,通过插入自定义代码扩展Scrapy的功能,例如去重等。
Python攻城狮
2018/08/23
2.1K0
Python网络爬虫(六)- Scrapy框架1.Scrapy2.安装和配置3.安装过程常见错误4.代码操作 - 创建一个Scrapy项目5.Scrapy框架进阶 - 深度爬虫
Scrapy 爬虫框架入门案例详解
本文介绍了如何使用 Scrapy 框架爬取知乎用户详细信息并存储到 MongoDB 数据库的过程。通过分析网页结构,使用 Scrapy 框架和 XPath、CSS 选择器提取数据,并利用 Spider 的 Item 输出格式将数据保存至 MongoDB 数据库。
崔庆才
2017/04/25
4K0
11、web爬虫讲解2—Scrapy框架爬虫—Scrapy使用
  @属性名称="属性值"表示查找指定属性等于指定值的标签,可以连缀 ,如查找class名称等于指定名称的标签 
天降攻城狮
2019/07/06
4100
11、web爬虫讲解2—Scrapy框架爬虫—Scrapy使用
爬虫课程(九)|豆瓣:Scrapy中items设计及如何把item传给Item Pipeline
一、定义Item Item是保存爬取到的数据的容器,其使用方法和python字典类似,并且提供了额外保护机制来避免拼写错误导致的未定义字段错误。 类似在ORM中做的一样,我们可以通过创建一个scrap
黄小怪
2018/05/21
8530
Python Scrapy 爬虫框架 | 5、利用 pipelines 和 settings 将爬取数据存储到 MongoDB
前文中讲到了将爬取的数据导出到文件中,接下来就在前文的代码基础之上,将数据导出到 MongoDB中。
TeamsSix
2019/12/31
1.1K0
Python Scrapy 爬虫框架 | 5、利用 pipelines 和 settings 将爬取数据存储到 MongoDB
Scrapy框架的使用之Scrapy入门
接下来介绍一个简单的项目,完成一遍Scrapy抓取流程。通过这个过程,我们可以对Scrapy的基本用法和原理有大体了解。 一、准备工作 本节要完成的任务如下。 创建一个Scrapy项目。 创建一个Spider来抓取站点和处理数据。 通过命令行将抓取的内容导出。 将抓取的内容保存的到MongoDB数据库。 二、准备工作 我们需要安装好Scrapy框架、MongoDB和PyMongo库。 三、创建项目 创建一个Scrapy项目,项目文件可以直接用scrapy命令生成,命令如下所示: scrapy st
崔庆才
2018/06/25
1.5K0
Scrapy爬虫入门
快两周了,还没缓过来劲,python 黑帽的系列教程今天才开始捡起来。不过工作又要忙了,晚上照顾玄小魂,白天敲代码,抽时间写文章,真的有点心力交瘁。不过没关系,一切都会好起来的。 ---------------------------------------------------------------------------------------------------- 本篇文章,是转载过来的,Python黑客编程的后续课程也会详细讨论Scrapy的使用的。 原文链接:http://chenqx.
用户1631416
2018/04/12
1.3K0
Scrapy爬虫入门
Python爬虫系列:Scrapy爬取实例(End~)
emmm,最近开始准备Java的文章,关于Python爬虫的文章也决定告一段落,那么这里小编决定给大家再来分析一下关于Scrapy.
小Bob来啦
2021/07/29
5120
Scrapy爬取自己的博客内容
根据给定的文章内容,撰写摘要总结。
古时的风筝
2018/01/08
9200
Scrapy爬取自己的博客内容
Scrapy爬虫轻松抓取网站数据(以bbs为例,提供源码)
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。   其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,
机器学习AI算法工程
2018/03/12
2.5K0
Scrapy爬虫轻松抓取网站数据(以bbs为例,提供源码)
推荐阅读
相关推荐
二、Item Pipeline和Spider-----基于scrapy取校花网的信息 编写item pipeline
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档