Scrapy介绍

Scrapy爬虫框架介绍 Scrapy是什么、创建Scrapy项目、配置请求头、配置管道、数据建模 阅读详情

在爬虫技术中,我们使用 Requests 和 Selenium 可以解决80%的需求,那么为什么我们还需要学习 Scrapy 框架呢?因为它可以使我们的爬虫更快、更强。

Scrapy 的基本概念

我们来看下官方文档的定义:

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
其最初是为了 页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。

简单来说,Scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能够快速的抓取。Scrapy 使用了 Twisted 异步网络框架,可加快我们的下载速度。我们之前为了加快爬虫效率,一般都是设计多线程来实现。当我们学习完了 Scrapy 之后,我们就可以不去考虑这些了,因为 Scrapy 框架已经帮我们实现了。因此我们可以用更少的代码更稳定的操作来爬取数据了。

Scrapy 的流程

简单爬虫流程

我们之前的爬虫经典流程是这样的:

爬虫基本流程.png

  • 我们首先定义了一个 URL 列表,用来存储需要请求的 URL
  • 接着我们从 URL 列表中取出 URL 进行请求,获取返回响应内容
  • 接着我们一方面从响应内容里面提取数据,将解析后的数据存储起来;另一方面如果响应内容里面有我们需要请求的 URL ,我们还需要将提取的 URL 加到 URL 列表中

改进版爬虫流程

接下来我们来看一下改进版的爬虫流程:

改进版爬虫流程.png

  • 我们把基本流程里面的 URL 列表改为了 URL 队列
  • 我们获取队列中的 URL 发送请求
  • 同样的,我们会提取请求返回的内容,获得需要的数据和新的 URL ,对于提取的 URL , 我们将其放入 URL 队列中,而对于提取的数据,我们将其放在数据队列中以等待后续处理。

这个改进版的流程里面主要在 URL 调度池以及提取的数据处理两处地方增加了队列机制,这么做可以让我们对这几个关键步骤进行异步处理,提高爬取效率。

Scrapy 流程

现在,我们再来看看 Scrapy 的流程:

scrapy流程.jpg

这是一张流行的经典的 Scrapy 流程图(让我们向图的作者致敬),对 Scrapy 的整个流程表现得很生动。

这个流程其实跟改进版的爬虫流程很相似,在改进版流程的基础上又做了一次进化。主要是在我们的流程中增加了一个 CPU(Scrapy 引擎),整个流程的各个部分都要经过这个引擎来统一调配。

下面我们来介绍一下这个流程图中的各个部件的功能作用:

  • Scrapy Engine(引擎): 负责 Spider、ItemPipeline、Downloader、Scheduler 中间的通讯,信号、数据传递等。

  • Scheduler(调度器): 它负责接受引擎发送过来的 Request 请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

  • Downloader(下载器):负责下载 Scrapy Engine(引擎)发送的所有 Requests 请求,并将其获取到的 Responses 交还给 Scrapy Engine(引擎),由引擎交给 Spider 来处理。

  • Spider(爬虫):它负责处理所有 Responses ,从中分析提取数据,获取 Item 字段需要的数据,并将需要跟进的 URL 提交给引擎,再次进入 Scheduler(调度器)。

  • Item Pipeline(管道):它负责处理 Spider 中获取到的 Item ,并进行进行后期处理(详细分析、过滤、存储等)的地方。

  • Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。

  • Spider Middlewares(Spider 中间件):你可以理解为是一个可以自定扩展和操作引擎和 Spider 中间通信的功能组件(比如进入 Spider 的 Responses 和从 Spider 出去的 Requests)

整个的运行流程,这里借用网络上某个大佬的段子(我觉得写得很通俗易懂)来展示:

  • 1 引擎:Hi!Spider, 你要处理哪一个网站?
  • 2 Spider:老大要我处理xxxx.com。
  • 3 引擎:你把第一个需要处理的 URL 给我吧。
  • 4 Spider:给你,第一个 URL 是xxxxxxx.com。
  • 5 引擎:Hi!调度器,我这有 request 请求你帮我排序入队一下。
  • 6 调度器:好的,正在处理你等一下。
  • 7 引擎:Hi!调度器,把你处理好的 request 请求给我。
  • 8 调度器:给你,这是我处理好的 request 。
  • 9 引擎:Hi!下载器,你按照老大的下载中间件的设置帮我下载一下这个 request 请求。
  • 10 下载器:好的!给你,这是下载好的东西。(如果失败:sorry,这个 request 下载失败了。然后引擎告诉调度器,这个 request 下载失败了,你记录一下,我们待会儿再下载)。
  • 11 引擎:Hi!Spider,这是下载好的东西,并且已经按照老大的下载中间件处理过了,你自己处理一下(注意!这儿 responses 默认是交给 def parse() 这个函数处理的)。
  • 12 Spider:(处理完毕数据之后对于需要跟进的 URL ),Hi!引擎,我这里有两个结果,这个是我需要跟进的 URL,还有这个是我获取到的 Item 数据。
  • 13 引擎:Hi !管道 我这儿有个 item 你帮我处理一下!调度器!这是需要跟进 URL 你帮我处理下。然后从第四步开始循环,直到获取完老大需要全部信息。
  • 14 管道调度器:好的,现在就做!

当我们的调度器中 URL 都消费完了,没有新的 URL 了,我们的整个过程才会终止。

总结

本文介绍了 Scrapy 的基本概念和运行流程。对于 Scrapy 的特点,我们只需要记住一点:更快更强。而通过将 Scrapy 和简单版以及改进版的爬虫流程对比,我们对 Scrapy 的特点会有一个基本的认知。

【Python Scrapy】详细介绍Scrapy的基本结构、组件和工作原理 Scrapy是一个功能强大的Python爬虫框架,提供了完备的爬取任务的工具集,同时也允许在需要的时候实现自定义组件,极大地提高了开发和维护的效率。掌握Scrapy并使用其组件进行爬虫开发,对于爬虫开发人员,是一门必不可少的技能。无论是对于爬虫性能的优化,还是对于数据的处理与管理,在Scrapy的丰富组件库中,都有非常成熟和专业的解决方案可以采用。 阅读详情

相关推荐

【Scrapy】Scrapy教程1——简介

学python,玩爬虫的人,肯定绕不开一个流行的爬虫框架——Scrapy。Scrapy其发音为(/ˈskreɪpaɪ/),是一个开源、协作的框架,用于网络抓取和结构化数据提取,广泛应用与数据发掘、信息处理、历史存档、监测和自动化等领域。虽然Scrapy最初设计用于网络抓取,但也可以用于获取API的数据或通用的网络爬虫。Scrapy是基于twisted框架开发的,twisted是一个流行的事件驱动的python网络框架,因此Scrapy使用了异步的代码来实现并发。

jayhgq的博客 1016

爬虫框架 Scrapy 详解

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

m0_67403076的博客 1万+

STM32F103C8T6+HX711实战:从零打造智能体重秤(附OLED显示与语音播报)

本文详细介绍了基于STM32F103C8T6微控制器和HX711称重模块,从零构建智能体重秤的完整实战教程。内容涵盖硬件选型、系统架构、驱动编写、数据滤波校准算法,并实现了OLED显示与语音播报功能。该项目是嵌入式学习的综合性实践,尤其适合作为毕业设计课题,帮助开发者掌握传感器应用、数据处理及人机交互等核心技能。

weixin_28285943的博客 519

超详细的Scrapy框架的基本使用教程

scrapy框架;Python爬虫

什么时候才不是菜鸟.... 1万+

生信人的一天~HIFI数据+HIC数据组装基因组

HIFI+HIC数据组装基因组!

qq_43337286的博客 9530

OpenCV图像去畸变实战指南:从原理到参数调优(附完整代码与效果对比)

本文深入解析了OpenCV图像去畸变的原理与实战技巧,详细对比了标准透视、鱼眼及全能型omnidir三种校正函数的核心参数调优方法。通过分析alpha、balance、centerX/Y及focalScale四大参数对输出效果的影响,并结合完整代码与效果对比图,帮助开发者精准校正镜头畸变,提升计算机视觉任务精度。

weixin_29046611的博客 341

Scrapy框架介绍

Scrapy 是一个基于 Python 开发的爬虫框架,可以说它是当前Python爬虫生态中最流行的爬虫框架,该框架提供了非常多爬虫相关的基础组件,架构清晰,可扩展性极强。基于Scrapy,我们可以灵活高效地完成各种爬虫需求。在学习,我们大多是基于requests 或 aiohttp 来实现爬虫的整个逻辑的。可以发现,在整个过程中,我们需要实现爬虫相关的所有操作,例如爬取逻辑、异常处理、数据解析、数据存储等,但其实这些步骤很多都是通用或者重复的。

W_chuanqi的博客 1545

ubuntu虚拟机搭建OP-TEE

在网上找了一些搭建OP-TEE的过程,模仿着进行搭建,结果有好多报错,为了方便自己以后重新搭建,所以将整个过程记录下来。

weixin_44213847的博客 1001

Scrapy 文件介绍

Scrapy 文件介绍   Spider类定义了如何爬取某个(或某些)网站。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的 https://www.baidu.com/link?url=cA3U-oFgb77zD_XOW_HGDBnCAqW2LMNk4XZ_joVgnQVz9mHr4WF7W6U5leFnMSaf&wd=&eqid=dc5b8dad000a7f2d000...

weixin_30325071的博客 248

【全局路径规划地图算法】Voronoi路径规划探索(附C++代码)

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对Voronoi路径规划探索做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 2242

AI原生应用中的数据治理:从采集到应用的完整方案

当AI从"辅助工具"进化为"应用核心"(如ChatGPT、智能驾驶系统),传统数据管理方式已无法满足需求:模型需要更精准的训练数据、业务需要更实时的决策支持、法规需要更严格的隐私保护。本文聚焦AI原生应用的数据全生命周期治理(从采集→清洗→标注→存储→应用→归档的完整链路),覆盖技术方案、工具选择和实践要点。本文将按"场景引入→核心概念→技术方案→实战案例→未来趋势"的逻辑展开,重点通过"奶茶店原料管理"类比,解释数据治理的关键环节;结合Python代码演示核心技术(如异常值检测、主动学习标注);

SuperAGI2025 883

scrapy框架之scrapy介绍和安装

Scrapy Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。 Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。 什么是框架?...

qq_38710789的博客 382

把时间当成数据:SAP ABAP 里的 DATS/TIMS 与 DATN/TIMN,怎么选才不踩坑

SAP项目中日期时间字段的陷阱与优化 日期时间字段(DATS/TIMS)在SAP项目中看似简单却常引发事故,主要问题包括: 非法日期(如20201331)入库后,在月结、对账时爆发异常 空值被处理为00000000导致排序错误 ABAP提供两种处理方案: 经典类型DATS/TIMS:存储为字符格式,校验宽松易存脏数据 HANA原生类型DATN/TIMN:数据库级校验,写入即拦截非法值 优化建议: 在接口层和入库前进行严格校验 新项目优先使用DATN/TIMN类型 对遗留数据使用DATS_IS_VALID等函

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 184

scrapy的介绍

scrapy框架学习的课程概要 scrapy的基础概念 scrapy的工作流程 scrapy的入门使用 scrapy的深入 crawlspider的使用 为什么要学习scarpy 我们之所以学习scrapy不是因为它能够帮助我们解决剩下的10%的爬虫需求,而是因为它能够大幅度地提高我们的爬虫效率,让我们的爬虫变得更快更强。 什么是scrapy scrapy是一个为了***爬取网站数据、提取结构性数据***而编写的应用***框架***,我们只需要实现少量的代码,就能够快速地抓取 框架&模块 模

yuhui_2000的博客 409

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

python的scrapy框架介绍

在Scrapy项目中,爬虫是用于定义如何爬取特定网站的类。在项目的spiders目录中,可以创建一个新的Python文件来定义你的爬虫。# 在这里处理网页响应,提取数据等pass在上面的示例中,我们定义了一个名为MySpider的爬虫,指定了名称为example,并指定了起始URL为。在parse方法中,你可以处理网页响应,并提取你需要的数据。Scrapy提供了多种数据存储的方式,如存储为JSON、CSV或数据库。你可以在项目的pipelines.py文件中定义数据存储管道。

2402_83140078的博客 1277

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

scrapy框架介绍

Scrapy 是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化数据的应用程序框...

542

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

scrapy爬虫框架介绍

scrapy爬虫框架介绍 一为什么选择scrapy   通过这一篇博客,我致力于对scrapy进行简单的介绍和简单的网页WEB数据抓取能力.Scrapy是一个健壮的web框架,用于从各种数据源抓取数据。   作为一个普通的web用户,您经常会发现自己希望能够通过Excel之类的电子表格程序从正在浏览的网站上获取数据(参见第3章基本爬行),以便在脱机或执行计算时访问这些数...

weixin_30367873的博客 131

Scrapy:安装介绍

在这之前我们先了解一下什么是Scrapy? Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便 Scrapy 使用了 Twisted’twɪstɪd异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求 Scrapy安装 Scrapy框架因为功能十分强大,所以依赖很多库,不能直接安

3997

Scrapy 框架简单介绍

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

spirit_artist的博客 3175

【python爬虫】之scrapy框架介绍

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍。所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)的具有很强通用性的项目模板。对于框架的学习,重点是要学习其框架的特性、各个功能的用法即可。

GR001009的博客 2789

Scrapy框架的使用之Scrapy框架介绍

Scrapy是一个基于Twisted的异步处理框架,是纯Python实现的爬虫框架,其架构清晰,模块之间的耦合程度低,可扩展性极强,可以灵活完成各种需求。我们只需要定制开发几个模块就可以轻松实现一个爬虫。 1. 架构介绍 首先我们看看Scrapy框架的架构,如下图所示。 它可以分为如下的几个部分。 Engine。引擎,处理整个系统的数据流处理、触发事务,是整个框架的核心。 Item。...

python学习者的博客 684

Scrapy的介绍与安装

Scrapy 是一个用于抓取网站和提取结构化数据的应用程序框架,可用于各种有用的应用程序,如数据挖掘、信息处理或历史存档。尽管 Scrapy 最初是为网络抓取而设计的,但它也可用于使用 API提取数据或用作通用网络爬虫。

yqqの博客 1032
上一篇: Selenium详解
下一篇: Scrapy入门使用
闲欢
博客等级 码龄17年 98粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

闲欢

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

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

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

打赏作者

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

抵扣说明:

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

余额充值