学科分类
目录
网络爬虫

Scrapy框架的架构

学习Scrapy框架,从理解它的架构开始。图1所示是Scrapy的架构图。

img

图1 Scrapy框架的架构图

​ 从图1可知,Scrapy框架主要包含以下组件:

(1)Scrapy Engine(引擎):负责Spider、Item Pipeline、Downloader、Scheduler之间的通讯,包括信号和数据的传递等。

(2)Scheduler(调度器):负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列和入队,当引擎需要时,交还给引擎。

(3)Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests(请求),并将其获取到的Responses(响应)交还给Scrapy Engine(引擎),由引擎交给Spider来处理。

(4)Spiders(爬虫):负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)。

(5)Item Pipeline(管道):负责处理Spiders中获取到的Item数据,并进行后期处理(详细分析、过滤、存储等)。

(6)Downloader Middlewares(下载中间件):是一个可以自定义扩展下载功能的组件。

(7)Spider Middlewares(Spider中间件):是一个可以自定义扩展Scrapy Engine和Spiders中间通信的功能组件(比如进入Spiders的Responses和从Spiders出去的Requests)。

Scrapy的这些组件通力合作,共同完成整个爬取任务。架构图中的箭头是数据的流动方向,首先从初始URL开始,Scheduler会将其交给Downloader进行下载,下载之后会交给Spider进行分析,Spider分析出来的结果有两种:一种是需要进一步抓取的链接,例如之前分析的“下一页”的链接,这些东西会被传回Scheduler;另一种是需要保存的数据,它们则被送到Item Pipeline那里,那是对数据进行后期处理(详细分析、过滤、存储等)的地方。另外,在数据流动的通道里还可以安装各种中间件,进行必要的处理。

点击此处
隐藏目录