Scrapy网络爬虫:框架组成与工作原理-组件与数据流

Scrapy网络爬虫:框架组成与工作原理-组件与数据流

Scrapy组件与数据流

1. Scrapy组件

  • ENGINE:引擎,是Scrpy框架的核心,其他所有的组件都是在其控制写工作的。引擎属于内部组件,通常并不需要开发者去实现。

  • SCHEDULER:调度器负责对SPIDER提交的下载请求进行调度。调度器也是内部组件

  • DOWNLOADER:下载器,负责下载页面,即发送HTTP请求和接收HTTP响应。下载器也是内部组件

  • SPIDER:爬虫,负责从页面解析和提取数据,以及生成新的HTTP请求。爬虫属于用户组件,必须由开发者去实现。

  • MIDDLEWARE:中间件,负责对HTTP请求和接收HTTP响应进行处理。中间件属于

    可选组件,开发者可根据需要开发。

  • ITEM PIPELINE:数据管道,负责对爬取的数据进行处理,如去重、写入数据库等,数据管道也是可选组件

对于开发者来说,Spider是最核心的组件,Scrapy项目的开发都是围绕着Spider展开的。

2. Scrapy框架数据流

Scrapy数据流中涉及到三种对象:

  • Request:Scrapy框架中的HTTP请求对象。

  • Response:Scrapy框架中的HTTP响应框架。

  • Item:从页面中提取的数据对象。

以上几种对象在框架中的流动过程:

  • 当Spider要爬取某URL地址的页面时,首先用该URL构造一个Request对象,提交给Engine(图中1)

  • 随后Request对象随后进入Scheduler,按照某种调度算法排队,之后的某个时候从队列中出来,游Engine提交给Downloader(图中的2、3、4)。

  • Downloader根据Request对象中的URL地址发送一次HTTP请求到目标网站服务器,并接受服务器返回的HTTP响应,构建一个Response对象(图中的5),并有Engine将Response提交给Spider(图中的6)

  • Spider提取Response中的数据,构造出Item对象或者根据新的连接构造出Request对象。分别由Engine提交给Item Pipeline或者Scheduler(图中的7、8)

  • 这个过程反复进行,直至爬完所有的数据。同时,数据对象在出入Spider和Downloader时可能会经过Middleware进行进一步的处理。

用一个不太恰当的比喻,Scrapy的组件可以比作人的器官,Request和Response对象是血液,Item则是代谢产物。


分享到:


相關文章: