`

scrapy架构及原理

阅读更多

scrapy data flow(流程图)

Scrapy使用了Twisted作为框架,Twisted有些特殊的地方是它是事件驱动的,并且比较适合异步的代码。对于会阻塞线程的操作包含访问文件、数据库或者Web、产生新的进程并需要处理新进程的输出(如运行shell命令)、执行系统层次操作的代码(如等待系统队列),Twisted提供了允许执行上面的操作但不会阻塞代码执行的方法。

下面的图表显示了Scrapy架构组件,以及运行scrapy时的数据流程,图中红色箭头标出。 
我大概翻译了下,具体参考官方文档

Scrapy数据流是由执行的核心引擎(engine)控制,流程是这样的:

1、爬虫引擎获得初始请求开始抓取。 
2、爬虫引擎开始请求调度程序,并准备对下一次的请求进行抓取。 
3、爬虫调度器返回下一个请求给爬虫引擎。 
4、引擎请求发送到下载器,通过下载中间件下载网络数据。 
5、一旦下载器完成页面下载,将下载结果返回给爬虫引擎。 
6、引擎将下载器的响应通过中间件返回给爬虫进行处理。 
7、爬虫处理响应,并通过中间件返回处理后的items,以及新的请求给引擎。 
8、引擎发送处理后的items到项目管道,然后把处理结果返回给调度器,调度器计划处理下一个请求抓取。 
9、重复该过程(继续步骤1),直到爬取完所有的url请求。

上图展示了scrapy的所有组件工作流程,下面单独介绍各个组件

  • 爬虫引擎(ENGINE) 
    爬虫引擎负责控制各个组件之间的数据流,当某些操作触发事件后都是通过engine来处理。

  • 调度器 
    调度接收来engine的请求并将请求放入队列中,并通过事件返回给engine。

  • 下载器 
    通过engine请求下载网络数据并将结果响应给engine。

  • Spider 
    Spider发出请求,并处理engine返回给它下载器响应数据,以items和规则内的数据请求(urls)返回给engine。

  • 管道项目(item pipeline) 
    负责处理engine返回spider解析后的数据,并且将数据持久化,例如将数据存入数据库或者文件。

  • 下载中间件 
    下载中间件是engine和下载器交互组件,以钩子(插件)的形式存在,可以代替接收请求、处理数据的下载以及将结果响应给engine。

  • spider中间件 
    spider中间件是engine和spider之间的交互组件,以钩子(插件)的形式存在,可以代替处理response以及返回给engine items及新的请求集。

scrapy项目结构

  • items.py 负责数据模型的建立,类似于实体类。
  • middlewares.py 自己定义的中间件。
  • pipelines.py 负责对spider返回数据的处理。
  • settings.py 负责对整个爬虫的配置。
  • spiders目录 负责存放继承自scrapy的爬虫类。
  • scrapy.cfg scrapy基础配置

 

分享到:
评论

相关推荐

    Scrapy架构流程介绍.zip

    在这个压缩包中,我们有一个名为"00.Scrapy架构流程介绍.mp4"的视频文件,虽然具体内容无法在此文字描述中体现,但我可以详细解释一下Scrapy的基本架构和流程。 Scrapy架构主要由以下几个组件构成: 1. **引擎...

    Scrapy课件及源码.rar

    本课件及源码集合旨在帮助初学者理解Scrapy的工作原理,并通过实际操作快速上手爬虫开发。 首先,让我们深入探讨Scrapy框架的核心组件: 1. **Spiders(爬虫)**:Scrapy爬虫是框架中的核心,它们定义了如何从网站...

    Scrapy分布式原理.key

    分布式爬虫架构,Scrapy分布式原理.scrapy,redis在每台从机Scrapy启动时都会首先判断当前Redis Request队列是否为空。 如果不为空,则从队列中取得下一个Request执行爬取。 如果为空,则重新开始爬取,第一台从机...

    Scrapy爬虫框架.pdf

    在详细介绍Scrapy爬虫框架之前,我们先回顾一下爬虫的基本原理。爬虫的本质是通过定位网页中的元素来获取页面数据。其一般工作流程包括分析需求确定目标网站,分析目标网站的URL组成规则,将目标页面的URL组织成列表...

    scrapy-1.4.pdf

    Scrapy的教程和示例部分对于初学者来说是一个很好的学习资源,可以帮助他们快速上手并理解Scrapy的工作原理。这部分内容从安装指南开始,到Scrapy教程、示例代码,循序渐进地引导用户了解如何使用Scrapy。 最后,...

    scrapy中文翻译文档0.24

    Scrapy是一个强大的Python爬虫框架,专为网络数据抓取和网页解析设计。这个"scrapy中文翻译文档0.24"提供了...通过阅读这个中文翻译文档,开发者能够深入理解Scrapy的工作原理,并有效地利用其功能构建高效的网络爬虫。

    Scrapy文档1.4.0 文档

    - **架构设计**:介绍了Scrapy的整体架构设计。 - **组件**:包括爬虫、调度器、下载器、中间件等多个组成部分。 ##### 6.2 Downloader Middleware (下载器中间件) - **定义**:下载器中间件位于下载器和调度器之间...

    scrapy教程

    - **架构概述**:提供了Scrapy内部架构的整体视图。 - **下载器中间件(Downloader Middleware)**:下载器中间件是在下载器和爬虫之间的一个钩子,可以修改请求和响应。 - **爬虫中间件(Spider Middleware)**:爬虫...

    scrapy1.5中文文档

    6. 高级中间件架构:Scrapy允许开发者自定义中间件,以扩展核心框架的功能,例如添加下载中间件和Spider中间件,用以处理请求和响应。 7. 信号支持:Scrapy支持信号,允许爬虫组件通过信号进行通信。 Scrapy还提供...

    Scrapy爬取新浪微博用户信息、用户微博及其微博评论转发

    1. **Scrapy架构**:Scrapy基于Twisted异步网络库,其核心组件包括Spiders、Item、Item Pipeline、Downloader Middleware、Request/Response等。Spiders负责定义爬取逻辑,Item定义数据结构,Item Pipeline处理爬取...

    scrapy.pdf

    文档中还包括了多个示例项目,这些示例可以帮助用户更好地理解Scrapy的工作原理及其实际应用。 #### 二、基础概念 Scrapy的核心概念包括命令行工具、项目、蜘蛛(spiders)、选择器(selectors)等。 ##### **2.1...

    Scrapy-0.24.2.tar.gz

    然而,对于初学者而言,它依然是一个很好的起点,可以帮助理解Scrapy的基本架构和工作流程。通过研究Scrapy-0.24.2的源代码,开发者可以深入了解框架内部的工作原理,从而更好地利用Scrapy构建自己的爬虫项目。

    scrapy0.22 API英文版

    - **架构概览**:解释了Scrapy内部的工作原理和设计模式。 - **下载中间件**:允许开发者添加额外的处理层,修改请求或响应对象。 - **蜘蛛中间件**:类似于下载中间件,但更侧重于处理爬虫的逻辑。 - **扩展**:...

    Python3网络爬虫基础+实战案例 Scrapy、Flask、PySpider、Tushare

    环境配置 Python3+Pip环境配置 MongoDB环境配置 Redis环境配置 MySQL的安装 Python多版本共存配置 ...Scrapy分布式原理及Scrapy-Redis源码解析 Scrapy分布式架构搭建抓取知乎 Scrapy分布式的部署详解

    Scrapy爬虫框架资料全集.rar

    本资料全集是针对Scrapy爬虫框架的基础知识及案例分析的综合资源,包括源码和文档,是学习和实践爬虫技术的理想资料。 一、Scrapy框架基础 1. 架构:Scrapy基于Twisted异步网络库,采用分层设计,主要由Spiders、...

    scrapy爬取腾讯招聘信息(可运行完整项目)

    首先,我们需要了解Scrapy的基本架构。Scrapy由多个组件组成,如Spiders(蜘蛛)、Item(数据模型)、Item Pipeline(数据处理管道)、Downloader Middleware(下载器中间件)和Spider Middleware(蜘蛛中间件)。在...

    基于scrapy爬取豆瓣top250

    首先,我们需要了解Scrapy的基本架构。Scrapy由多个组件构成,如Spiders(蜘蛛)、Item(数据模型)、Item Pipeline(数据处理管道)、Downloader Middleware(下载器中间件)和Request/Response对象等。在本项目中...

    爬虫Scrapy 1.0.5 中文手册_目录_文字

    最后,Scrapy还提供了一个架构概览,帮助开发者快速理解Scrapy的内部工作流程和原理。 Scrapy的贡献指南(ContributingtoScrapy)说明了如何为Scrapy项目贡献代码,而版本信息(VersioningandAPIStability)介绍了...

    scrapy的智联招聘爬虫

    首先,我们需要了解Scrapy的基本架构。Scrapy由多个组件组成,如Spider(爬虫)、Item(数据模型)、Item Pipeline(数据处理流程)、Request/Response(网络请求和响应)、Downloader Middleware(下载器中间件)和...

    基于Scrapy的分布式网页及文件爬虫应用的研究.pdf

    提取往往局限于单机模式,效率较低,难以应对海量数据的抓取需求。...通过理解并掌握Scrapy的原理和实践,开发者可以构建出高效、稳定且具备大规模数据处理能力的网络爬虫系统,为企业和研究提供强有力的数据支持。

Global site tag (gtag.js) - Google Analytics