Scrapy框架的核心架构与执行流程

一.Scrapy的核心架构

在学习Scrapy的过程中,时常需要添加各种功能,因此需要我们熟悉Scrapy的架构并取重写它的部分功能:

  (1)Scrapy引擎(Engine):引擎是Scrapy架构的核心,负责数据和信号在组件间的传递。

  (2)调度器(Scheduler):存储带爬取的网址,并确定网址的优先级,决定下一次爬取的网址。

  (3)下载中间件(Downloader Middlewares):对引擎和下载器之间的通信进行处理(如设置代理、请求头等)。

  (4)下载器(Downloader):对相应的网址进行高速下载,将互联网的响应返回给引擎,再由引擎传递给爬虫处理。

  (5)爬虫中间件(Spider Middlewares):对引擎和爬虫之间的通信进行处理。

  (6)爬虫(Spider):对响应response进行处理,提取出所需的数据(可以存入items),也可以提取出接下来要爬取的网址。

  (7)实体管道(Item Pipline):接收从爬虫中提取出来的item,并对item进行处理(清洗、验证、存储到数据库等)。

               Scrapy框架的核心架构与执行流程

二.scrapy的执行流程

1.首先Spiders(爬虫)将需要发送请求的url(requests)到Engine(引擎)。

2.Engine(引擎)把request交给Scheduler(调度器)。

3.Scheduler经过排序,入队处理后,重新把request发送到Engine。

4.Engine把request请求通过DownloaderMiddlewares(可选,主要有User_Agent, Proxy代理)交给Downloader(下载器)。

5.Downloader向网站发送请求,并接受下载响应(Response),将Response返回给Engine。

6.Response由Engine,经过SpiderMiddlewares(可选)发送到Spiders开始解析。

7.解析数据完成后,将所需的Items原路返回到Engine。

8.Engine将Items发送到ItemPipeline(可以是本地,可以是数据库),提取下一个url再次进行循环。

                             Scrapy框架的核心架构与执行流程