开发者社区> 行者武松> 正文

Scrapy 架构及数据流图简介

简介: Scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘、信息处理或存储历史数据等一系列的程序中。本文着重介绍 Scrapy 架构及其组件之间的交互。 Scrapy 组件介绍 Scrapy Engine 引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。
+关注继续查看

Scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘、信息处理或存储历史数据等一系列的程序中。本文着重介绍 Scrapy 架构及其组件之间的交互。

Scrapy 组件介绍

  • Scrapy Engine 引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。 详细内容查看下面的数据流(Data Flow)部分。
  • 调度器(Scheduler)  调度器从引擎接受request并将他们入队,以便之后引擎请求他们时提供给引擎。
  • 下载器(Downloader) 下载器负责获取页面数据并提供给引擎,而后提供给spider。
  • Spiders  Spider 是 Scrapy用户编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。 每个spider负责处理一个特定(或一些)网站。
  • Item Pipeline  Item Pipeline负责处理被spider提取出来的item。典型的处理有清理、 验证及持久化(例如存取到数据库中)。
  • 下载器中间件(Downloader middlewares) 下载器中间件是在引擎及下载器之间的特定钩子(specific hook),处理Downloader传递给引擎的response。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。
  • Spider中间件(Spider middlewares)  Spider中间件是在引擎及Spider之间的特定钩子(specific hook),处理spider的输入(response)和输出(items及requests)。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。

数据流(Data flow)

Scrapy中的数据流由执行引擎控制,其过程如下:

  1. 引擎打开一个网站(open a domain),找到处理该网站的Spider并向该spider请求第一个要爬取的URL(s)。
  2. 引擎从Spider中获取到第一个要爬取的URL并在调度器(Scheduler)以Request调度。
  3. 引擎向调度器请求下一个要爬取的URL。
  4. 调度器返回下一个要爬取的URL给引擎,引擎将URL通过下载中间件(请求(request)方向)转发给下载器(Downloader)。
  5. 一旦页面下载完毕,下载器生成一个该页面的Response,并将其通过下载中间件(返回(response)方向)发送给引擎。
  6. 引擎从下载器中接收到Response并通过Spider中间件(输入方向)发送给Spider处理。
  7. Spider处理Response并返回爬取到的Item及(跟进的)新的Request给引擎。
  8. 引擎将(Spider返回的)爬取到的Item给Item Pipeline,将(Spider返回的)Request给调度器。
  9. (从第二步)重复直到调度器中没有更多地request,引擎关闭该网站。

事件驱动网络(Event-driven networking)

Scrapy基于事件驱动网络框架 Twisted 编写。因此,Scrapy基于并发性考虑由非阻塞(即异步)的实现。

关于异步编程及Twisted更多的内容请查看下列链接:


原文发布时间:2017-07-23
本文来自云栖社区合作伙伴Debian社区,了解相关信息可以关注Debian社区

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
OLAP架构及技术实现的演进简介
这个阶段中,OLAP主要基于以Oracle、MySQL为代表的一众关系型数据实现。在ROLAP架构下,直接使用这些数据库作为存储与计算的载体。在MOLAP架构下,则借助物化视图的形式实现各数据操作。但难以解决的问题是,不论是ROLAP还是MOLAP,在数据体量大、维度数目多的情况下都存在严重的性能问题。
37 0
【微服务安全】使用 Spring Boot、Kafka、Vault 和 Kubernetes 保护微服务间通信——第 1 部分:简介和架构
【微服务安全】使用 Spring Boot、Kafka、Vault 和 Kubernetes 保护微服务间通信——第 1 部分:简介和架构
18 0
Ceph简介与体系架构
Ceph简介与体系架构
129 0
MyCat-架构剖析-MySQL 协议简介 | 学习笔记
快速学习 MyCat-架构剖析-MySQL 协议简介
154 0
MySQL 逻辑架构简介|学习笔记
快速学习 MySQL 逻辑架构简介
45 0
orbeon form 的架构简介 - 如何访问用户通过 form 存储的数据
从用户的视角出发,Orbeon Forms 架构很简单。 它由 Form Builder(表单编辑器)和 Form Runner(表单运行时)组成,与数据库(持久层)对话。 此外,与用户管理系统的集成也是一种常见的场景。
40 0
SAP Commerce Cloud 里的 Solr 架构简介
大多数电子商务网站都在其网站上提供搜索功能,尤其是用于搜索产品详细信息。
43 0
+关注
行者武松
杀人者,打虎武松也。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
基于英特尔®架构的阿里云服务网格ASM技术加速应用服务加密通
立即下载
以银行架构视角解读和落实银行数字化转型的两份重磅指导文件
立即下载
云原生架构容器&微服务优秀案例集
立即下载