1. 引擎 (scrapy engine)
负责scrapy中数据流的控制
2. 调度器(scheduler)
负责从引擎接受request并将其入队
3. 下载器(downloader)
通过下载中间件
负责获取页面数据并提供给引擎,而后提供给spider
数据流
引擎负责各部分的分工,数据的流动,所有部分均需要引擎分配工作
- 引擎获取url:引擎打开网站(start_domain),找到处理该网站的spider,并请求start_url(第一个url);
-
引擎(url)-->调度器入队(request方式):引擎获取url并交给调度器以request方式调度,将request入队;
——————request部分完成—————— - 引擎-->调度器请求url;调度器-->引擎返回url:引擎向调度器请求要爬取的url,调度器返回给引擎;
- 引擎(url)-->下载器中间件-->下载器:引擎通过下载中间件(request方向)转发给下载器;
- 下载器(response)-->下载器中间件-->引擎:页面下载完毕,下载生成该页面的response,并将其通过下载器中间件返回给引擎;
-
引擎(response)-->spider中间件-->spider:引擎接收response并通过spider中间件发送给spider;
——————resopnse部分完成—————— - spider(item、response)-->引擎:spider处理response并返回item及新的request给引擎;
- 引擎(item)-->item pipeline:引擎将item发送给item pipeline;
- 引擎(request)-->调度器:引擎将request发送给调度器;
- 返回第二步开始重复,直到调度器中request为空,引擎关闭该网站。