ExecutionEngine是scrapy的核心模块之一,顾名思义是执行引擎。
它驱动了整个爬取的开始,进行,关闭。
它又使用了如下几个主要模块来为其工作:
1.slot:它使用Twisted的主循环reactor来不断的调度执行Engine的"_next_request"方法,这个方法也是核心循环方法。下面的
流程图用伪代码描述了它的工作流程,理解了它就理解了引擎的核心功能。
另外slot也用于跟踪正在进行下载的request。
2.downloader:下载器。主要用于网页的实际下载
3.scraper:数据抓取器。主要用于从网页中抓取数据的处理。也就是ItemPipeLine的处理。
根据上面的分析可知,主要是_next_request在不断的进行工作,因此这个函数重点分析,流程图如下:
流程详解:
1.这个_next_request方法有2种调用途径,一种是通过reactor的5s心跳定时启动运行,另一种则是在流程中需要时主动调用。
2.如果没有暂停,则运行。判断是否需要搁置?这个判断条件如右边紫色框中讲的,有4种需要搁置的
scrapy源码分析(二)----------ExecutionEngine(一)主循环
最新推荐文章于 2024-07-01 22:31:11 发布