Scrapy 入门教程 | 菜鸟教程 (runoob.com)
Scrapy是一个快速功能强大的网络爬虫框架
Scrapy的安装
通过 pip 安装 Scrapy 框架:
pip install Scrapy
安装后小测: 执行 scrapy ‐h
Scrapy不是一个函数功能库,而是一个爬虫框架。
Scrapy架构图(绿线是数据流向)
-
Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
-
Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
-
Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,
-
Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器).
-
Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方。
-
Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。
-
Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)
Scrapy框架包含三条主要的数据流路径
第一条路径从spider模块经过engine到达scheduler,其中engine到达scheduler的地方获取了爬取用户的请求,我们对这种请求叫做request请求,可以简单的把请求理解为一个url,那么请求通过spider到达engine之后,那么请求通过spider到达engine之后,engine将这个爬取请求转发给了schedule模块
Scrapy爬虫框架解析
Engine (1) 控制所有模块之间的数据流 (2) 根据条件触发事件 不需要用户修改
Downloader 根据请求下载网页 不需要用户修改
Scheduler 对所有爬取请求进行调度管理 不需要用户修改
Downloader Middleware 目的:实施Engine、Scheduler和Downloader 之间进行用户可配置的控制 功能:修改、丢弃、新增请求或响应 用户可以编写配置代码
Spider (1) 解析Downloader返回的响应(Response) (2) 产生爬取项(scraped item) (3) 产生额外的爬取请求(Request)用户可以编写配置代码
Item Pipelines (1) 以流水线方式处理Spider产生的爬取项 (2) 由一组操作顺序组成,类似流水线,每个操 作是一个Item Pipeline类型 (3) 可能操作包括:清理、检验和查重爬取项中 的HTML数据、将数据存储到数据库 用户可以编写配置代码
Spider Middleware 目的:对请求和爬取项的再处理 功能:修改、丢弃、新增请求或爬取项 用户可以编写配置代码
request库和Scrapy爬虫的比较
相同点: 两者都可以进行页面请求和爬取,Python爬虫的两个重要技术路线 两者可用性都好,文档丰富,入门简单 两者都没有处理js、提交表单、应对验证码等功能(可扩展)