scrapy是一个Python爬虫框架。我们自己用requests也能写爬虫(GET某个URL,然后Parse网页的内容),那么,问题来了,scrapy高明在哪些地方呢?下面就来讨论下这个话题,看看业界通用的爬虫是怎么设计的。

从[1]可得scrapy架构图。它由5个核心模块组成。

5个模块功能

  • (1) 最重要的模块是Engine:它是数据流的指挥官,负责控制数据流(控制各个模块之间的通信);
  • (2) scheduler:负责将Engine提交的URL排成一个队列;
  • (3) spider:用户自己写的代码放在spider。主要负责HTTP response的解析,从回复的HTML中提取关键数据。
  • (4) downloader:负责跟URL对应的server通信,并获取返回的内容。
  • (5) item pipeline:负责处理spider提取出来的信息,一般用于做跟DB相关的操作。

2个中间件

中间件是处于两个模块之间的一种特殊hook,它的目的是提供一种简易的机制,通过插拔用户自己写的代码,来扩展新功能。

典型的数据流

  • (1) Engine启动,从spider中读出要爬的第一个URL
  • (2) Engine将读到的第一个URL送给scheduler
  • (3) Engine向scheduler请求下一个要爬的URL
  • (4) scheduler从队列中读出一个URL,送给Engine,Engine将这个URL送到downloader
  • (5) downloader去GET这个URL,并将HTTP response生成一个Response对象。downloader将生成的Response返回给Engine
  • (6) Engine将这个Response对象发给spider
  • (7) spider处理这个Response对象,提取其中的信息,生成item。还会生成新的请求。并将item和请求送给Engine
  • (8) Engine将收到的请求送给scheduler,将收到的item送给item pipline
  • (9) 重复步骤(2),直到没有URL需要继续处理

所有的处理流程都需要经过 Scrapy Engine,然后到达下一个流程

源自 http://blog.csdn.net/ybdesire/article/details/51559255

转载于:https://www.cnblogs.com/fly-kaka/p/6856173.html

scrapy架构设计分析相关推荐

  1. Web API应用架构设计分析(2)

    在上篇随笔<Web API应用架构设计分析(1)>,我对Web API的各种应用架构进行了概括性的分析和设计,Web API 是一种应用接口框架,它能够构建HTTP服务以支撑更广泛的客户端 ...

  2. python scrapy框架 简书_python爬虫框架——Scrapy架构原理介绍

    说起写爬虫,大多数第一时间想到的就是python了.python语法简洁明了,加上及其丰富好用的库,用它来写爬虫有天然的优势. 之前学python的时候也用requests+lxml写过几个爬虫玩,但 ...

  3. 第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图...

    第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲-爬虫和反爬的对抗过程以及策略-scrapy架构源码分析图 1.基本概念 2.反爬虫的目的 3.爬虫和反爬的对抗过程以及策略 scra ...

  4. Saas系统架构的思考,多租户Saas架构设计分析

    ToB Saas系统最近几年都很火.很多创业公司都在尝试创建企业级别的应用 cRM, HR,销售, Desk Saas系统.很多Saas创业公司也拿了大额风投.毕竟Saas相对传统软件的优势非常明显. ...

  5. 网狐棋牌游戏平台服务器架构设计分析[转]

    网狐棋牌游戏平台服务器架构设计分析[转] http://blog.csdn.net/weiwangchao_/article/details/7047044 基本设计概念和处理流程 调用模型 模仿CO ...

  6. 【传智播客郑州校区分享】MyBatis的架构设计分析

    [传智播客郑州校区分享]MyBatis的架构设计分析 MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单.优雅.本文主要讲述MyBatis的架构设计思路,并且讨论MyBat ...

  7. 玩转 Scrapy 框架 (二):Scrapy 架构、Request和Response介绍

    目录 一.Scrapy 架构及目录源码分析 二.Request 和 Response 介绍 2.1 Request 2.2 Response 三.实例演示 3.1 POST 请求 3.2 GET 请求 ...

  8. Web API应用架构设计分析(1)

    Web API 是一种应用接口框架,它能够构建HTTP服务以支撑更广泛的客户端(包括浏览器,手机和平板电脑等移动设备)的框架, ASP.NET Web API 是一种用于在 .NET Framewor ...

  9. 网狐棋牌游戏平台服务器架构设计分析

    调用模型 模仿COM组件接口模式,利用面向对象思想多态性polymorphism,调用方保存着被调用方的基础接口指针(interface or sink钩子)(Pure Virtual Functio ...

最新文章

  1. C#中如何获取注册表信息
  2. 路由与交换大作业pkt_干货 | 交换机“练功大法”——略有小成(一)
  3. [Javascipt] Immediately-Invoker 2
  4. linux安装redis并在后台启动
  5. C/C++ 指针和数组
  6. 身体好不是锻炼出来的
  7. Linux下关于gcc、vim、readelf、rpm、yum、彩色进度条的问题
  8. mac php5.6 gd 扩展,mac 编译安装php5.6.40
  9. JSP+JavaBean+Servlet工作原理实例讲解
  10. 有道翻译与VS2010滚动栏自动反弹冲突问题
  11. Linux 下SVN安全及权限配置
  12. echarts图广东和福建地图上城市坐标
  13. 在Ubuntu中搭建嵌入式Linux开发环境
  14. matlab生成tiff,MATLAB中自定义栅格数据地理坐标并写出数据到tiff文件
  15. 解决安装MATLAB2018a后出现License Manager Error -8的问题
  16. 2019 Multi-University Training Contest 3:Yukikaze and Demons(点分治 + exgcd)
  17. UE4--用插件加载第三方库lib/dll(lsl)
  18. Linux网络编程8——线程池模型
  19. echarts添加背景图片,背景色及水印
  20. 怎样在word中画横线

热门文章

  1. Oracle大型数据库在AIX UNIX上的实战详解
  2. Linux服务器傻瓜安装(图解下)(4)
  3. 判断一个文本文件的编码格式
  4. 简单而又完整的Makefile-转
  5. android studio绑定数据库表,Android:数据绑定库的使用
  6. python 连接 oracle 循环,4.使用cx_Oracle连接Oracle(高级篇)
  7. kafka python client:PyKafka vs kafka-python
  8. RedHat Linux安装Informix v10.x(图文详解)
  9. 用SignalR 2.0开发客服系统[系列5:使用SignalR的中文简体语言包和其他技术点]
  10. [原创]商品条码管理与条码打印管理软件的实现