今天给大家分享一个实战项目,利用 Scrapy 框架抓取研招网的招生目录信息。包括各个招生单位的所有招生专业信息以及考试课程信息等,最终效果如下。
首先给大家简单介绍下Scrapy框架以及它的安装。Scrapy是适用于Python的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据,整体架构如下:
主要的组件及其作用如下:引擎(Scrapy Engine):框架的核心,用于整个系统的数据流处理, 触发事务等;调度器(Scheduler):用于接受引擎发送的请求, 压入队列中, 并在引擎再次请求时返回. 可以看成是网址的优先队列, 由它决定下一个要抓取的网址是什么,去除重复的网址;下载器(Downloader):用于下载网页内容, 并将网页内容返回给蜘蛛,Scrapy下载器建立在twisted这个高效的异步模型上;爬虫(Spiders):用于从响应的结果中提取用户想要的信息,即所谓的实体Item。用户也可以从中提取出网址, 让 Scrapy 继续抓取下一个网址;项目管道(Pipeline):负责处理爬虫从网页中抽取的实体,主要是持久化实体例如保存到数据库中、验证实体的有效性、清除不需要的信息;
下载器中间件(Downloader Middlewares):位于Scrapy引擎和下载器之间的框架,用于处理Scrapy引擎与下载器之间的请求及响应;爬虫中间件(Spider Middlewares):介于Scrapy引擎和爬虫之间的框架,用于处理蜘蛛的响应输入和请求输出。调度中间件(Schedul