注册
登录
提问时间:2018/10/22 16:00:52    楼主:未知网友   阅读量:232

Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

下面用一张图来说明scrapy框架的工作流程:

一图说明scrapy框架的工作流程

Scrapy Engine: 这是引擎,负责Spiders、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等等!

Scheduler(调度器): 它负责接受引擎发送过来的requests请求,并按照一定的方式进行整理排列,入队、并等待Scrapy Engine(引擎)来请求时,交给引擎。

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

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

Item Pipeline:它负责处理Spiders中获取到的Item,并进行处理,比如去重,持久化存储(存数据库,写入文件,总之就是保存数据用的)。

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

Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spiders中间‘通信‘的功能组件(比如进入Spiders的Responses;和从Spiders出去的Requests)。

明白了各个模块的作用和职责,接下来就好理解了,当程序运行的时候,数据在整个Scrapy的流向是这样的:

1、spider告诉Scrapy Engine要处理说明网站,将第一个需要处理的URL给Scrapy Engine;

2、Scrapy Engine将spider的request给Scheduler处理,并接收Scheduler处理好的request;

3、Scrapy Engine将处理好的request交给Downloader,Downloader将下载好的东西交给Scrapy Engine;

4、Scrapy Engine将下载好的东西按照Spider Middlewares处理好再交给spider处理;

5、Spider处理完毕数据之后将需要跟进的URL还有获取到的Item交给Scrapy Engine;

6、Scrapy Engine将item交给Item Pipeline处理,将URL交给Scheduler处理,从第2步开始循环,知道获取到所需要的信息。