1. Scrapy框架介绍
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,是一个基于Twisted的异步处理框架,是纯Python实现的爬虫框架,架构清晰,模块之间的耦合程度低,可扩展性极强,可以灵活的完成各种需求。
2.Scrapy项目的创建以及运行
1 | 1. 创建爬虫的项目 |
3.Scrapy架构
- Engine:引擎。处理整个系统的数据流处理、触发事务、是整个框架的核心,会自动组织所有的请求对象,分发给下载器。
- Downloader:下载器。从引擎处获取到请求对象后,下载网页内容,请求数据并将网页内容返回给Spiders蜘蛛。
- Spiders:蜘蛛。内部定义了爬取的逻辑和网页的解析规则,主要负责解析响应并生成提取结果和新的请求。换句话说,Spiders就是定义爬取动作以及分析某个或者某些网页的地方。
- Scheduler:调度器。接受引擎发过来的请求并将其加入到队列中,在引擎再次请求的时候将请求提供给引擎。
- Item Pipeline:项目管道。是最终处理数据的管道,会预留接口供我们存储数据,负责处理由Spiders从网页中抽取的项目,主要任务是负责清洗、验证和存储数据。
4. Scrapy工作原理(数据流)
Scrapy的数据流是引擎控制的,数据流过程如下:
- Engine首先打开一个网站,找到处理该网站的Spider,并向Spider请求第一个要爬取的url。
- Engine将要爬取的url传给调度器Scheduler。
- 调度器Scheduler将url生成请求对象放入指定的队列中。
- 从队列中出队一个请求,Engine将请求交给下载器DownLoader进行处理。
- 下载器Downloader发送请求获取互联网数据。
- 一旦页面下载完毕,DownLoader生成该页面的Response,返回给Engine。
- Engine从下载器中接收到Response,将其给到Spider。
- Spider通过xpath进行解析,得到数据或者新的请求url。
- Spider将解析得到的数据或者请求返回给Engine。
- Engine判断该数据是数据还是请求url,将数据讲给项目管道处理,是url则继续交给调入器重复3-9步骤。
Demo 汽车之家宝马价格:
1 | import scrapy |