Scrapy框架的组件和执行流程
1、Scrapy框架的核心架构
首先,要搞清楚Scrapy的架构就必须明白Scrapy中的组件以及各个组件的作用。
接下来,我们看一看Scrapy框架的组件有哪些以及它们的作用。
-
Scrapy引擎:引擎是Scrapy架构的核心,负责数据和信号在组件间的传递。
-
调度器:存储带爬取的网址,并确定网址的优先级,决定下一次爬取的网址。
-
下载中间件:对引擎和下载器之间的通信进行处理(如设置代理、请求头等)。
-
下载器:对相应的网址进行高速下载,将互联网的响应返回给引擎,再由引擎传递给爬虫处理。
-
爬虫中间件:对引擎和爬虫之间的通信进行处理。
-
爬虫:对响应response进行处理,提取出所需的数据(可以存入items),也可以提取出接下来要爬取的网址。
2、Scrapy框架的执行流程
- Engine向Spiders请求URL
- Spiders爬取URL对象并返回给Engine
- Engine将URL对象执行入队操作存入Scheduler中
- Scheduler执行出队操作,将URL通过Engine处理提交给Downloader
- Downloader拿到URL后执行下载操作,并将response通过Engine处理返回给Spiders
- Spiders解析从Downloader返回的response(提取所需数据),如果解析出的是URL对象则重复执行步骤2,如果解析出的是item对象则需要进行结构化数据处理,并将处理后的item通过Engine处理传到Pipeline进行进一步处理