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