您的“关注”和“点赞”,是信任,是认可,是支持,是动力…

如意见相佐,可留言。
本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。

文章目录

  • 1 Scrapy 框架概述
  • 2 Scrapy 框架的特点
    • 2.1 快速而强大
    • 2.2 容易扩展
    • 2.3 可移植(跨平台)
  • 3 Scrapy 框架的架构概述
    • Scrapy 体系结构(架构图)
    • 对组件说明
    • 对数据流说明
  • 【友情链接】
    • 微信公众号:码农阿杰
    • 博客园
  • 【参考资料】
    • [Python 官网](https://www.python.org/)
    • [Python 3.8.2 documentation](https://docs.python.org/release/3.8.2/)
    • [Scrapy 官网](https://scrapy.org/)
    • [Scrapy 2.2 documentation](https://docs.scrapy.org/en/latest/)

1 Scrapy 框架概述

Scrapy 是一个适用于 Python 的一个快速、高层次的、开放源代码的屏幕抓取和 web 抓取的应用程序框架,用于抓取 web 站点并从页面中提取结构化的数据,可用于各种有用的应用程序。

Scrapy 常应用在包括数据挖掘、监测、信息处理、存储历史数据(历史档案)或自动化测试等一系列的程序中。通常我们可以很简单的通过 Scrapy 框架实现一个爬虫,抓取指定网站的内容或图片。

Scrapy 最初是为屏幕抓取而设计的,但它也可以用来访问 API 或用作通用 Web 搜寻器来提取数据。

Scrapy 吸引人的地方在于它是一个框架,任何人都可以根据需求便捷的进行修改。它也提供了多种类型爬虫的基类,如 BaseSpider、sitemap 爬虫等。

2 Scrapy 框架的特点

2.1 快速而强大

编写规则以提取数据,然后让 Scrapy 完成其余工作。

它管理请求,解析 HTML 网页,收集数据并将其保存为所需的格式,不需要为每个其他步骤使用单独的库。

2.2 容易扩展

通过设计可扩展,无需接触核心即可轻松插入新功能。

可以在 Scrapy 中使用中间件。中间件是一种“插件”,可为 Scrapy 添加其他功能。我们可以将很多开源中间件附加到 Scrapy 以获得额外的功能。

2.3 可移植(跨平台)

用 Python 编写,可以在 Linux,Windows,Mac 和 BSD 上运行。

3 Scrapy 框架的架构概述

概述 Scrapy 体系结构(架构图)及其组件,及其系统内部发生的数据流(由红色箭头显示),还包括对这些组件的简要说明。

Scrapy 体系结构(架构图)

如下图所示(来自官方文档):

对组件说明

  • Engine(引擎):Scrapy 引擎负责控制系统所有组件之间的数据流,并在发生某些操作时触发事件。
  • Scheduler(调度器):Scrapy 调度器调度程序接收来自引擎的 request(请求),并对它去重,放入到请求队列中;并在引擎请求它们时使它们排队,并根据队列的取出规则,把请求按顺序返回给引擎。
  • Downloader(下载器):下载器负责获取网页数据并将其返回给引擎,引擎又将其传给 Spiders(爬虫)。
  • Spiders(爬虫):爬虫(Spiders)用来解析 response,提取出 Items 和新的Requests。
  • Item Pipeline(项目管道):一旦爬虫将这些项目提取(或刮取),则项目管道负责处理这些项目。典型的任务包括清理,验证和持久性(例如将项目存储在数据库中)。
  • Downloader middlewares(下载器中间件):Downloader 中间件是位于引擎和Downloader 之间的特定挂钩,数据流在从引擎传递到 Downloader 时处理请求,以及从 Downloader 传递到 Engine 的响应处理。
    如果需要执行以下操作之一,请使用 Downloader 中间件:
    (1)在将请求发送到下载程序之前处理请求(即,在 Scrapy 将请求发送到网站之前);
    (2)在传递给 Spiders 之前更改收到的响应;
    (3)发送新的请求,而不是将收到的响应传递给 Spiders;
    (4)将响应传递给 Spiders,而无需获取网页;
    (5)默默地丢弃一些请求。
  • Spider middlewares(爬虫中间件):爬虫中间件是位于引擎和爬虫之间的特定挂钩,并且能够处理爬虫的输入(响应)和输出(项目和请求)。
    如果需要以下操作之一,请使用 Spider 中间件:
    (1)Spiders 回调的后处理输出-更改/添加/删除请求或项目;
    (2)后处理 start_requests;
    (3)处理爬虫异常;
    (4)根据响应内容,对某些请求调用 errback 而不是回调。

对数据流说明

首先,Scrapy 会实例化一个 Crawler 对象,在该对象中创建 Spider 对象、Engine 对象,通过 Engine 对象打开 Spider,并生成第一个 request(请求)。

  • ①Scrapy Engine(Scrapy 引擎) 从 Spiders(爬虫)获取初始请求。
  • ②Scrapy Engine(Scrapy 引擎)把请求给调度器,并询问下一次请求。
  • ③Scrapy Scheduler(Scrapy 调度器)对 url 去重,放到队列中等待,并把下一个 request 返回给 Engine。
  • ④Scrapy Engine(Scrapy 引擎)把从调度器返回的 reqest 经过下载中间件交给下载器。
  • ⑤页面下载完成后, Downloader 会生成一个 Response(响应),并通过 Downloader Middlewares(下载器中间件)将其发送到 Engine。
  • ⑥引擎接收来自下载器的响应,并通过爬虫中间件,将其发送到爬虫进行处理。
  • ⑦爬虫接收到响应,解析处理响应,解析出 Items 和 新的 Request ,再通过爬虫中间件提交给 Engine。
  • ⑧引擎把接收到的 Items 提交给 Item Pipeline,把接收到的 Request 提交给调度器。
  • ⑨重复该过程(从步骤1开始),直到不再有 Scheduler 的请求为止 。

【友情链接】

微信公众号:码农阿杰

博客园

【参考资料】

Python 官网

Python 3.8.2 documentation

Scrapy 官网

Scrapy 2.2 documentation

Scrapy 框架介绍 [Scrapy 框架概述][Scrapy 框架的特点][Scrapy 框架的架构概述]相关推荐

  1. Django框架介绍及配置

    Django框架介绍及配置 一, WEB框架介绍 1.1Web应用程序处理流程 1.2Web框架程序的意义 用于搭建Web应用程序 免去不同Web应用相同代码部分的重复 1.3 Web应用程序的本质 ...

  2. python爬虫scrapy框架教程_Python爬虫教程-30-Scrapy 爬虫框架介绍

    从本篇开始学习 Scrapy 爬虫框架 Python爬虫教程-30-Scrapy 爬虫框架介绍 框架:框架就是对于相同的相似的部分,代码做到不出错,而我们就可以将注意力放到我们自己的部分了 常见爬虫框 ...

  3. 13 Scrapy框架介绍

    # Author:Nimo_Ding''' 练习 - 当当图书榜单爬虫 前两关,我们学习了能提升爬虫速度的进阶知识--协程,并且通过项目实操,将协程运用于抓取薄荷网的食物数据. 可能你在体验开发一个爬 ...

  4. 1. Scrapy 框架介绍

    1. Scrapy 框架介绍 Scrapy是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy = Scrach+Python S ...

  5. 数据分析利器Python——爬虫(含爬取过程、Scrapy框架介绍)

    文章目录 一.基础知识 1.定义 2.基本架构 二.URL管理模块 三.网页下载模块 Python中的requests模块 四.网页解析模块 1.结构化网页解析 2.BeautifulSoup使用步骤 ...

  6. 【Python笔记】网络爬虫——常用框架介绍以及 Scrapy 框架使用

    网络爬虫开发常用框架 Scrapy 爬虫框架 Crawley 爬虫框架 PySpider 爬虫框架 Scrapy 爬虫框架的使用 搭建 Scrapy 爬虫框架 1. 安装 Twisted 模块 2. ...

  7. Python爬虫之scrapy框架介绍

    一.什么是Scrapy? Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等) ...

  8. Python爬虫——scrapy框架介绍

    一.什么是Scrapy? Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等) ...

  9. python多线程框架_Python爬虫第七天:多线程爬虫|Scrapy框架

    内容简述: 一:多线程爬虫 二:Scrapy框架 一:多线程爬虫原理 [示例见代码] 二:Scrapy框架 定义:Scrapy是基于Python实现,方便爬取网站数据.提取结构性数据的应用框架. 底层 ...

最新文章

  1. NoSQL有了Android版本
  2. spring boot打包文件后,报错\No such file or directory
  3. 返岗上班应该注意什么?五个细节必须牢记
  4. LiveVideoStackCon讲师热身分享 ( 十三 ) —— Intel QSV技术在FFmpeg中的实现与使用
  5. VSCode中怎么改变文件夹的图标
  6. 来了!云栖大会都能看到什么?
  7. 在delphi中嵌入腳本語言--(譯)RemObjects Pascal Script使用說明(1)(譯)
  8. uniapp对象怎么获取值_原理 | 怎么获取PMSM电机转子位置Offset值
  9. php 无法创建com组件,关于IIS php调用com组件的权限问题
  10. 为什么三表联查查出的数据每条出现好多次_独家解读!京东高可用分布式流数据存储的架构设计...
  11. 基于 Transfer Learning from Speaker Verification to Multispeaker Text-To-Speech Synthesis 的语音克隆复现论文阅读
  12. Elastic 7.12 版重磅发布:读时模式、冻结层技术预览版和自动扩展功能正式发布
  13. Linux SPI驱动框架(2)——控制器驱动层
  14. 计算机组成原理常见题(四)
  15. python conda无法安装包 报错An HTTP error occurred when trying to retrieve this URL.
  16. IIC、SPI和UART区别
  17. Zookeeper-3.4.5安装步骤及异常处理
  18. 经典网页设计:20个简约风格的电子商务网站
  19. 【风控模型方法论】利用系数符号、VIF和IV快速挑选模型变量
  20. 有交互项的多元线性回归

热门文章

  1. 微信小程序授权保存图片到相册
  2. 计算机氧气游戏,外媒分享空间模拟新作《氧气不足》游戏体验
  3. 抖音超火的小空调源码
  4. 关于iOS11中estimatedRowHeight属性
  5. 绘画小白怎么画纹理?该怎么去处理画面中的纹理?
  6. TOB企业如何构建自身的生态力
  7. 快手查权重+抖音查权重+QQ查估值三合一软件工具【查询脚本+详细教程】
  8. APP开发选择什么框架好?
  9. JavaScript中字符串拼接
  10. 「好软安利」一个使用简单还高效率的写作排版软件