Python爬虫从入门到放弃(十二)之 Scrapy框架的架构和原理
这一篇文章主要是为了对scrapy框架的工作流程以及各个组件功能的介绍 Scrapy目前已经可以很好的在python3上运行Scrapy使用了Twisted作为框架,Twisted有些特殊的地方是它是事件驱动的,并且比较适合异步的代码。对于会阻塞线程的操作包含访问文件、数据库或者Web、产生新的进程并需要处理新进程的输出(如运行shell命令)、执行系统层次操作的代码(如等待系统队列),Twisted提供了允许执行上面的操作但不会阻塞代码执行的方法。 Scrapy data flow(流程图) Scrapy数据流是由执行的核心引擎(engine)控制,流程是这样的:1、爬虫引擎ENGINE获得初始请求开始抓取。2、爬虫引擎ENGINE开始请求调度程序SCHEDULER,并准备对下一次的请求进行抓取。3、爬虫调度器返回下一个请求给爬虫引擎。4、引擎请求发送到下载器DOWNLOADER,通过下载中间件下载网络数据。5、一旦下载器完成页面下载,将下载结果返回给爬虫引擎ENGINE。6、爬虫引擎ENGINE将下载器DOWNLOADER的响应通过中间件MIDDLEWARES返回给爬虫SPIDER...