Scrapy 框架介绍
- Scrapy 将爬虫的三步:获取网页、解析网页、数据存储都整合的应用框架
- 应用框架指的是实现了某应用领域通用完备功能(除去特殊应用的部分)的底层服务
- Scrapy 框架主要由五大组件组成:
- Scrapy 引擎(Scrapy Engine):
- Scrapy 引擎是整个框架的核心。负责控制数据流在所以组件流动,并在相应动作时触发事件。引擎相当于计算机的 CPU,控制着整个流程
- 调度器(Scheduler)
- 从 Engine 接受 Request 并将他们加入 Spider 队列。可以理解帮助 URL(抓取网页的网址或者说是链接)的排队的工具
- 下载器(Downloader)
- 所有组件中负担最大的,它用于高速地下载网络上的资源。类似于之前爬虫学的“获取网页”的功能
- 爬虫(Spider):
- 爬虫是由用户编写的自定义的类,用于解析响应,从中提取数据,或其他要抓取的请求。即获得实体(Item)。 用户也可以从中提取出链接,让 Scrapy 继续抓取下一个页面。类似于“解析网页”的功能
- 实体管道(Item Pipeline):
- 管道负责在数据被爬虫提取后进行后续处理。典型的任务包括清理,验证和持久性(如将数据存储在数据库中)。类似于“存储数据”的功能
- Scrapy 各组件对应爬虫三大流程
组件 | 对应的爬虫三大流程 | Scrapy项目是否需要修改 |
Engine | 无需修改,框架已经写好 | |
Schedule | 无需修改,框架已写好 | |
Downloader | 获取网页(Requests库) | 无需修改,框架已写好 |
Spider | 解析网页(BeautifulSoup库) | 需要 |
Item Pipeline | 存储数据(存入csv/txt……) | 需要 |
Downloader Middlware | 获取网页-个性化部分 | 一般不用 |
Spider | 解析网页-个性化部分 | 一般不用 |
- Scrapy 数据流向
- Request vs. Scrapy
- 相同点
- 两者都没有处理 js,提交表单,应对验证码等功能(可扩展)
- 不同点
Request+BeautifulSoup | Scrapy |
页面级爬虫 | 网站级爬虫 |
功能库 | 框架 |
并发性考虑不足,性能较差 | 并发性好,性能较高 |
重点在于页面下载 | 重点在于爬虫结构 |
定制灵活 | 一般定制灵活,深度定制困难 |
上手十分简单 | 入门稍难 |
- 何时使用 Request、Scrapy
- 小的项目或者深度定制建议使用 Request
- 大的项目并发量大的建议使用 Scrapy(持续周期性不间断爬取)
- 下载
pip install scrapy
- 测试
scrapy -version