scrapy源码分析(一)---------------------总执行流程概览
2016-11-27 22:01
337 查看
scrapy是一个基于twisted实现的开源爬虫,要读懂其源码,需要对twisted的异步编程模型有一定了解。可以通过之前3篇deferred的相关教程了解。
下面是总结的执行一个爬虫任务的整体执行流程,请将图片放大查看,即运行"scrapy crawl xxxSpider"的执行流程:
流程中主要的颜色框的含义如下 :
1.红色框是模块或者类。
2.紫色框是向模块或者类发送的消息,一般为函数调用。
3.红色框垂直以下的黑色框即为本模块或者对象执行流程的伪代码描述。
几个关键的模块和类介绍如下:
cmdline:命令行执行模块,主要用于配置的获取,并执行相应的ScrapyCommand。
ScrapyCommand:命令对象,用于执行不同的命令。对于crawl任务,主要是调用CrawlerProcess的crawl和start方法。
CrawlerProcess:顾名思义,爬取进程,主要用于管理Crawler对象,可以控制多个Crawler对象来同时进行多个不同的爬取任务,并调用Crawler的crawl方法。
Crawler:爬取对象,用来控制一个爬虫的执行,里面会通过一个执行引擎engine对象来控制spider从打开到启动等生命周期。
ExecutionEngine:执行引擎,主要控制整个调度过程,通过twisted的task.LoopingCall来不断的产生爬取任务。
请关注后面的教程,将会详细介绍各个模块的作用和关键代码实现。
下面是总结的执行一个爬虫任务的整体执行流程,请将图片放大查看,即运行"scrapy crawl xxxSpider"的执行流程:
流程中主要的颜色框的含义如下 :
1.红色框是模块或者类。
2.紫色框是向模块或者类发送的消息,一般为函数调用。
3.红色框垂直以下的黑色框即为本模块或者对象执行流程的伪代码描述。
几个关键的模块和类介绍如下:
cmdline:命令行执行模块,主要用于配置的获取,并执行相应的ScrapyCommand。
ScrapyCommand:命令对象,用于执行不同的命令。对于crawl任务,主要是调用CrawlerProcess的crawl和start方法。
CrawlerProcess:顾名思义,爬取进程,主要用于管理Crawler对象,可以控制多个Crawler对象来同时进行多个不同的爬取任务,并调用Crawler的crawl方法。
Crawler:爬取对象,用来控制一个爬虫的执行,里面会通过一个执行引擎engine对象来控制spider从打开到启动等生命周期。
ExecutionEngine:执行引擎,主要控制整个调度过程,通过twisted的task.LoopingCall来不断的产生爬取任务。
请关注后面的教程,将会详细介绍各个模块的作用和关键代码实现。
相关文章推荐
- Java程序员从笨鸟到菜鸟之(四十)细谈struts2(四)struts2中action执行流程和源码分析
- memcached源码分析(一): memcached.c主函数分析 执行流程
- 传奇源码分析-客户端(全局变量与总体执行流程)
- Zookeeper源码分析(4)- Follower执行流程
- 细谈struts2中action执行流程和源码分析
- Zookeeper源码分析(3)- Leader执行流程
- Strust2第(四)篇《struts2中action执行流程和源码分析》
- Struts2学习(第四篇)——struts2中action执行流程和源码分析
- 传奇源码分析-客户端(全局变量与总体执行流程)
- struts2中action执行流程和源码分析
- Nginx 源码分析-- 模块module 解析执行 nginx.conf 配置文件流程分析 二
- Tor源码分析九 -- 客户端执行流程(网络信息的下载)
- Java程序员从笨鸟到菜鸟之(四十)细谈struts2(四)struts2中action执行流程和源码分析
- PHP-Yii执行流程分析(源码)
- Hadoop源码流程分析4-Task节点执行任务
- Android源码分析(一):android原生源码编译期间执行的流程
- Tor源码分析五 -- 客户端执行流程(libevent调度)
- Tor源码分析八 -- 客户端执行流程(second_elapsed_callback函数)
- Nginx源码分析—HTTP框架执行流程
- struts2(四)struts2中action执行流程和源码分析