scrapy的工作流程如下图所示

整个工作流程,

  1. 爬虫中起始的url构造成request对象, 并传递给调度器.

  2. 引擎调度器中获取到request对象. 然后交给下载器

  3. 下载器来获取到页面源代码, 并封装成response对象. 并回馈给引擎

  4. 引擎将获取到的response对象传递给spider, 由spider对数据进行解析(parse). 并回馈给引擎

  5. 引擎将数据传递给pipeline进行数据持久化保存或进一步的数据处理.

  6. 在此期间如果spider中提取到的并不是数据. 而是子页面url. 可以进一步提交给调度器, 进而重复步骤2的过程

上述过程中一直在重复着几个东西,

  1. 引擎(engine)

    scrapy的核心, 所有模块的衔接, 数据流程梳理.

  2. 调度器(scheduler)

    本质上这东西可以看成是一个队列. 里面存放着一堆我们即将要发送的请求. 可以看成是一个url的容器. 它决定了下一步要去爬取哪一个url. 通常我们在这里可以对url进行去重操作.

  3. 下载器(downloader)

    它的本质就是用来发动请求的一个模块. 小白们完全可以把它理解成是一个requests.get()的功能. 只不过这货返回的是一个response对象.

  4. 爬虫(spider)

    这是我们要写的第一个部分的内容, 负责解析下载器返回的response对象.从中提取到我们需要的数据.

  5. 管道(pipeline)

    这是我们要写的第二个部分的内容, 主要负责数据的存储和各种持久化操作.

经过上述的介绍来看, scrapy其实就是把我们平时写的爬虫进行了四分五裂式的改造. 对每个功能进行了单独的封装, 并且, 各个模块之间互相的不做依赖. 一切都由引擎进行调配. 这种思想希望你能知道–解耦. 让模块与模块之间的关联性更加的松散. 这样我们如果希望替换某一模块的时候会非常的容易. 对其他模块也不会产生任何的影响.

scrapy的工作流程相关推荐

  1. Scrapy框架的学习(1.scrapy的概念以及scrapy的工作流程)

    scrapy的概念 1.为什么要学习Scrapy?  因为会让我们的爬虫更快.更强 2.什么是scrapy? (1) Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现 ...

  2. 爬爬爬——了解scrapy框架工作流程

    丧丧的春节过了,又到了学习的季节--熟悉scrapy框架 为什么选择用框架: 不用重复造轮子,scrapy 底层是异步框架 twisted ,吞吐量高. 1.scrapy 的基础概念: scrapy ...

  3. Scrapy框架的概念、作用和工作流程

    1. scrapy的概念         Scrapy是一个Python编写的开源网络爬虫框架.它是一个被设计用于爬取网络数据.提取结构性数据的框架. Scrapy是一个为了爬取网站数据,提取结构性数 ...

  4. 一、scrapy爬虫框架——概念作用和工作流程 scrapy的入门使用

    scrapy的概念和流程 学习目标: 了解 scrapy的概念 了解 scrapy框架的作用 掌握 scrapy框架的运行流程 掌握 scrapy中每个模块的作用 1. scrapy的概念 Scrap ...

  5. 爬虫之scrapy工作流程

    Scrapy是什么? scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量代码,就能够快速的抓取到数据内容.Scrapy 使用了 Twisted['twɪstɪd] ...

  6. python爬虫之Scrapy框架的post请求和核心组件的工作 流程

    python爬虫之Scrapy框架的post请求和核心组件的工作 流程 一 Scrapy的post请求的实现 在爬虫文件中的爬虫类继承了Spider父类中的start_urls,该方法就可以对star ...

  7. 17-爬虫之scrapy框架五大核心组件工作流程及下载中间件介绍04

    scrapy的五大核心组件 引擎(Scrapy) 对整个系统的数据流进行处理, 触发事务(框架核心). 调度器(Scheduler) 用来接受引擎发过来的请求. 由过滤器过滤重复的url并将其压入队列 ...

  8. scrapy 模块功能流程--转

    scrapy工作流程和每个模块的具体作用 其流程可以描述如下: 爬虫中起始的url构造成request对象-->爬虫中间件-->引擎-->调度器 调度器把request-->引 ...

  9. Elasticsearch基础1——搜索引擎发展史和工作流程、es/es-head/kibana的基础安装

    文章目录 一.搜索引擎 1.1 搜索引擎的发展背景 1.2 Lucene和Elasticsearch 1.3 Solr和Elasticsearch对比 1.4 数据搜索方式 1.5 搜索引擎 1.5. ...

最新文章

  1. 【126】TensorFlow 使用皮尔逊相关系数找出和标签相关性最大的特征值
  2. 代码规范:在Keil5中使用代码格式化工具Astyle(插件)
  3. Apk打包-签名过程
  4. Taro+react开发(50) 小程序触底操作
  5. 使用“微服务+云架构”轻松应对系统扩容!
  6. 用C#打开文件对话框的方法和简单使用的程序
  7. short_open_tag 相关
  8. 顶点计划 抄作业问题讨论
  9. 92套AE抖音快闪模板(精品)
  10. C++学习记录3:定义一个矩形类Rectangle
  11. SQL中DDL、DML、DQL、DCL、TCL是什么意思
  12. 单片机C语言GRB888和RGB565的互相转换
  13. Android开发:登录/注册界面的编写
  14. 基于石墨烯的光电探测传感器研究
  15. python读取excel成绩表,并设置柱状图
  16. springboot集成Appollo动态配置
  17. 手打css 问号提示-用于输入框,标题后面...
  18. 机房在线搬迁的规划与实施
  19. Java的三大版本和JDK,JRE,JVM的概念
  20. RFID人员定位设备具体配置

热门文章

  1. java中setattr功能_Java Controller.setAttr方法代码示例
  2. 消息队列和延迟消息队列
  3. java sql建立索引_SQL索引一步到位
  4. LCD液晶显示控制原理简介(非物理显示原理)
  5. navicat看执行计划
  6. linux 测试 ip、端口号可用性
  7. windows系统查看电脑里面所有应用软件方法步骤
  8. java和c语言的语法区别_c语言和java的语法区别是什么?
  9. CCF1005 存款收益
  10. 产品经理哪些能力最值钱?(建议收藏)