scrapy是一个基于twisted实现的开源爬虫,要读懂其源码,需要对twisted的异步编程模型有一定了解。可以通过之前3篇deferred的相关教程了解。
下面是总结的执行一个爬虫任务的整体执行流程,请将图片放大查看,即运行"scrapy crawl xxxSpider"的执行流程:
流程中主要的颜色框的含义如下 :
1.红色框是模块或者类。
2.紫色框是向模块或者类发送的消息,一般为函数调用。
3.红色框垂直以下的黑色框即为本模块或者对象执行流程的伪代码描述。
几个关键的模块和类介绍如下: