scrapy 的基本运行流程 加上我的理解

第一点前提,要看了解这张图首先要知道每个不见的含义

第二就是他们之间有什么工作关系

------引擎-------ScrapyEngine -------Scrapy引擎是用来控制整个系统的数据处理流程,并进行事务处理的触发。

--------------------我的理解就是整个scrapy的 发动机,核心,心脏,大脑,CPU,中转站.......起到连接整个流程的作用,跟代码无关。其实我们主要工作的地方是spider文件夹里面的蜘蛛文件。果然写一写有助于记忆,是不是牛B了就不写了....期待牛B的那一天

-------调度------Scheduler---------(调度程序)...从Scrapy引擎接受请求并排序列入队列,并在Scrapy引擎发出请求后返还给他们。

-----------------------------我的理解是指挥官,引擎从-->蜘蛛那里获得网址——>引擎-->放到调度里面排队,检查是否符合他的要求-->然后....我接着介绍--¥¥¥(其实这个调度也不用我们太操心)

-------Downloader(下载器)--------下载器的主要职责是抓取网页并将网页内容返还给蜘蛛( Spiders)。

[email protected]然后调度把符合要求的网址-----》发送到下载器-----》获得网页数据

---------spider----(蜘蛛侠)----其实他只是个筛选网页数据的工人,而这个工人是由我们控制的机器蜘蛛虾。-------数据在此进行筛选,并且将结果放到

-----------Item Pipeline(项目管道)---好吧这个名字....就是个管子....吸管..通道....将想要的结果通过这里传到数据库或者保存为文件。我们在这里编写存放结果方法的管子

Downloader middlewares(下载器中间件)

下载中间件是位于Scrapy引擎和下载器之间的钩子框架,主要是处理Scrapy引擎与下载器之间的请求及响应。它提供了一个自定义的代码的方式来拓展Scrapy的功能。下载中间器是一个处理请求和响应的钩子框架。他是轻量级的,对Scrapy尽享全局控制的底层的系统。

Spider middlewares(蜘蛛中间件)

蜘蛛中间件是介于Scrapy引擎和蜘蛛之间的钩子框架,主要工作是处理蜘蛛的响应输入和请求输出。它提供一个自定义代码的方式来拓展Scrapy的功能。蛛中间件是一个挂接到Scrapy的蜘蛛处理机制的框架,你可以插入自定义的代码来处理发送给蜘蛛的请求和返回蜘蛛获取的响应内容和项目。

Scheduler middlewares(调度中间件)

调度中间件是介于Scrapy引擎和调度之间的中间件,主要工作是处从Scrapy引擎发送到调度的请求和响应。他提供了一个自定义的代码来拓展Scrapy的功能。

    中间件。。。我不是很理解......感觉...没太深入http://blog.csdn.net/frylion/article/details/8558538 他这里写的比较完整嘿嘿我这个是粗糙版

数据处理流程...加粗

Scrapy的整个数据处理流程有Scrapy引擎进行控制,其主要的运行方式为:

  1. 引擎打开一个域名,时蜘蛛处理这个域名,并让蜘蛛获取第一个爬取的URL。
  2. 引擎从蜘蛛那获取第一个需要爬取的URL,然后作为请求在调度中进行调度。
  3. 引擎从调度那获取接下来进行爬取的页面。
  4. 调度将下一个爬取的URL返回给引擎,引擎将他们通过下载中间件发送到下载器。
  5. 当网页被下载器下载完成以后,响应内容通过下载中间件被发送到引擎。
  6. 引擎收到下载器的响应并将它通过蜘蛛中间件发送到蜘蛛进行处理。
  7. 蜘蛛处理响应并返回爬取到的项目,然后给引擎发送新的请求。
  8. 引擎将抓取到的项目项目管道,并向调度发送请求。
  9. 系统重复第二部后面的操作,直到调度中没有请求,然后断开引擎与域之间的联系。
时间: 2024-08-05 11:12:50

scrapy 的基本运行流程 加上我的理解的相关文章

MapReduce运行流程分析

研究MapReduce已经有一段时间了.起初是从分析WordCount程序开始,后来开始阅读Hadoop源码,自认为已经看清MapReduce的运行流程.现在把自己的理解贴出来,与大家分享,欢迎纠错. 还是以最经典的WordCount程序作为基础,来分析map阶段.reduce阶段和最复杂的shuffle阶段. 文本1:hello world                                      文本2:map reduce hello hadoop            

[MUD]MUDLIB详解/MUDOS运行流程/最小MUDLIB/mud文件结构

现在大部分中文MUD都是在东方故事(esII)基础上发展起来的,其目录结构基本一样, 也有个别MUD为了标新立异对个别目录换了个名字以示不同,但其实质没有什么变化. 这个做的最可恶的是xkx,把一个好好的daemon目录换成了一个不土不洋的kungfu, 里边却还是skill,condition这些洋名,简直让人faint!我实在看不出这种修改有什么好处, 除了添麻烦(xkx对一些命令的汉化,什么cha,du...也是如此).不过, 也有一些是为了系统更合理而修改的. 对MUDLIB目录的解释已

scrapy的 安装 及 流程 转

安装 linux 和 mac 直接  pip install scrapy 就行 windows 安装步骤         a. pip3 install wheel       b. 下载twisted http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted       c. 进入下载目录,执行 pip3 install Twisted?17.1.0?cp35?cp35m?win_amd64.whl       d. pip3 install sc

[原创]java WEB学习笔记70:Struts2 学习之路-- struts2拦截器源码分析,运行流程

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

springmvc的运行流程分析

前几篇文章对springmvc讲解的很清楚,大家看下,有问题,我们再一起讨论. 其实springmyuxvc最为重要是它的运行流程,接着,我们来分析一下,其运行过程,废话不多说,看图说话: 分析如下: 1,用户发起请求到前端控制器(DispatchService) 2,前端控制器通过HandlerMapping找到Handler(即是Action) 3,HandlerMapping返回HandlerExecutionChain(执行链),该执行链包含两部分内容,(Handler对象,拦截器数组)

1、CC2541蓝牙4.0芯片中级教程——基于OSAL操作系统的运行流程了解+定时器和串口例程了解

本文根据一周CC2541笔记汇总得来—— 适合概览和知识快速索引—— 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 中级教程-OSAL操作系统(OSAL系统解基本套路) 中级教程-OSAL操作系统(进一步了解-OLED && 普通按键和5方向按键-中断!!!)这个系统驱动层和应用层不一样~ 中级教程-OSAL操作系统(ADC-光敏电阻) OSAL操作系统-实验16 串口波特率扩展 OSAL操作系统-实验1

@ModelAttribute运行流程

@ModelAttribute运行流程: * 1. 执行 @ModelAttribute 注解修饰的方法: 从数据库中取出对象, 把对象放入到了 Map 中. 键为: user * 2. SpringMVC 从 Map 中取出 User 对象, 并把表单的请求参数赋给该 User 对象的对应属性. * 3. SpringMVC 把上述对象传入目标方法的参数. * * 注意: 在 @ModelAttribute 修饰的方法中, 放入到 Map 时的键需要和目标方法入参类型的第一个字母小写的字符串一

Struts 2的架构和运行流程

之前看书,笔记都是记录在云笔记上(因为实在太水,不好意思写blog).现在感觉还是应该写在blog上,写得比较水,而且有一些不懂的地方也希望大家可以帮忙看看.之后再慢慢把以前的笔记整理上来.里面有什么不对的,希望大家可以帮忙指正. 最近在看<研磨Struts 2>,看完了架构和运行流程,下面写一写自己的理解. Struts 2的架构 Struts 2的架构如下图(图从官网找的): 1. 橙色是Servlet Filters,过滤链,所有的请求都要经过Filter链的处理. 2. 浅蓝色是Str

MVC开发模式的数据运行流程

对于java中经典的开发模式MVC,有一些感触!现说一下Java中数据的运行流程,由于我技术有限,有错的话欢迎提出,不喜勿喷! 我们知道在MVC开发模式,包括三部分视图层V(view).控制层C(Controller)和模型层M(model),那么在一个项目中,这三部分又是指的什么呢? 视图层:顾名思义指的是看到的界面,通常也就是我们所说的JSP页面. 控制层:指的是servlet. 模型层:除了这两部分,剩下的所有. 在这里我将用画图的形式显示一下,数据的流转方式 1.当我们在JSP页面点击一