2.1. Scrapy 源码剖析 架构概览
2.1.1. 简介
官方给出的介绍如下:
Scrapy 是一个基于 Python 语言编写的开源爬虫框架,它可以帮你快速、简单的方式构建爬虫,并从网站上提取你所需要的数据。
2.1.2. 快速入门
可以参考 官方入门教程
2.1.3. 架构
2.1.4. 核心模块
engine: 核心引擎,负责控制和调度各个组件,保证数据流的正确流转。
scheduler: 调度器,负责接受引擎发过来的请求,存储要调度的任务,并按照一定的策略进行调度,管理任务,过滤任务,都在这里控制。
downloader: 下载器,负责从各个站点下载网页,输出下载结果。
spiders: 爬虫,我们自定义编写的代码,负责根据我们的需求,解析出来特定的item对象。
item pipelines: 管道,负责将spiders解析出来的item对象,进行持久化存储。
download middlewares: 下载中间件,介于引擎和下载器中间,在网页下载前和后完成一些逻辑处理。
spiders middlewares: 爬虫中间件,介于引擎和爬虫中间,在爬虫解析前和后完成一些逻辑处理。
2.1.5. 运行步骤
引擎从Spider获取初始URL(种子URL).
引擎在Scheduler中调度请求,并请求下一个要抓取的请求。
scheduler将下一个请求返回给引擎。
引擎通过下载中间件将请求发送到下载器。
一旦下载完成,下载器会生成一个相应,并将其发送给引擎。
引擎接收到下载器的响应,通过spider 中间件将其发送到spider处理。
spider处理相应,并返回一个item对象或者request对象。
引擎将处理的item对象发送给item pipeline。请求对象发送给scheduler。
重复2-8步,直到scheduler中没有请求为止。