Python爬取考研数据:所有985高校、六成211高校均可调剂

2020-02-26 16:52:19 浏览数 (1)

又到了一年一度的考研出分时间啦,近期有不少朋友让笔者帮他们分析如何提前做好调剂。复试与调剂总是密不可分。今天,给大家分享一些调剂的重要知识点,希望你在调剂的时候,能明白调剂的趋势与规则。

也许,大家对于调剂的印象,就是只要等待招生单位的复试通知就可以了,其实这是错误的,这里会经历很多流程,如筛选排除,但最终决定权还是在导师的手里,每年都会有五分之一的考生达到了分数线,却倒在了调剂上。那么具体原因有哪些呢?

作者 | 小康康

编辑 | 胡巍巍

来源 | CSDN(ID:CSDNnews)

考研调剂中的机遇与风险

一、在获取调剂信息的时候,出现重要的延误,没有及时获取一手信息,导致很多人提前联系导师,博得好印象。

二、成绩达标,获取的调剂信息太少,没有去到自己心仪的高校,而被迫进行无奈的选择。

三、调剂信息量太大,大家都知道1-4月是调剂信息的爆发期,每天盯着大量的内容,难免会有所遗漏,没有做好信息的快速筛选,导致匆忙应对调剂、而忽略了自身的匹配性。

以上这三种被刷的概率是最大的,所以,一定要评估好自己的综合能力,调剂也是一门技术活,认清自己,选择合适才是王道。下面再列举一些调剂的技巧。

要想成功调剂,首先要把握调剂的第一手信息,能及时地获取到哪所高校的专业招生人数不足,而且符合你的条件,是很有必要的。同时,调剂也是有要求的,如下,

一、具备国家规定的复试资格;

二、入学考试统考科目中的俩科要与调剂专业的考试科目完全相同,两科的专业考试科目要相同或相近(专业不对口,调剂成功的机率为零);

三、优先考虑本专业内部的调剂,再考虑跨专业调剂,最后是跨校调剂;

四、咨询高校研招办确认招生人数是否已满,满的不要考虑了(获取第一手招生空缺信息很重要);

五、不要等待复试结果,各校的复试时间有差异,容易错失调剂的机会。

调剂数据爬虫Selenium开发实战

网上有很多网站都在公布调剂信息,其中大多数实验室的一手调剂信息都是公布在论坛的,再有很多网站小编转手Copy自己的网站里,那么今天就要说一说怎么去获取调剂数据并进行分析。

本文只获取数据并进行数据分析,以帮助大家更好的了解调剂形势。

选取中国考研网站上公布调剂查询页面,其页面效果大致如图所示:

先对页面结构进行分析,可以看出是【信息流】 【粗->细】 【翻页】的结构。

针对这种结构,采用Python Selenium进行爬虫开发。

Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11)、Mozilla 、Firefox、Safari、Google Chrome、Opera等。

这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好地工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。

大学名称、专业名称以及调剂标题名称,均在列表中。那么:

第一步:获取【信息流所在的HTML元素】

通过对HTML进行解析,可以发现所有的信息流的都是DIV标签包裹的,其共同特征都是class=”info-item font14” 。

由此想到Selenium中的一个接口find_elements_by_xpath,那么Xpath是什么呢?

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。取节点 XPath使用路径表达式在XML文档中选取节点。节点是通过沿着路径或Step来选取的。

下面列出了最有用的路径表达式:

表达式

描述

nodename

选取此节点的所有子节点。

/

从根节点选取。

//

从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。

.

选取当前节点。

..

选取当前节点的父节点。

@

选取属性。

在下面的表格中,已列出了一些路径表达式以及表达式的结果:

路径表达式

结果

bookstore

选取 bookstore 元素的所有子节点。

/bookstore

选取根元素 bookstore。注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!

bookstore/book

选取属于 bookstore 的子元素的所有 book 元素。

//book

选取所有 book 子元素,而不管它们在文档中的位置。

bookstore//book

选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。

//@lang

选取名为 lang 的所有属性。

通过xpath,可以根据标签中的子属性以及层级结构进行自定义的精细筛选。

那么,针对这里的信息流Xpath,应该怎么去写代码呢?

可以看到信息是属于DIV的,Class均为info-item font14,于是可以得出:

到这里,就得到了调剂的所有信息流板块,接下来要做的是针对每一个信息流板块单独解析,拿出其中的标签与超链接。

可以看到信息流的子项如下图所示,这个时候,可以根据class=”school” 抓取大学名称,根据class=”name”抓取专业名称 ,根据class=”title”抓取超链接和标题,根据class=”time”抓取发布日期。

代码如下所示:

之后,点开一个详情页,查看调剂的内容:

可以看到页面的排版如上,所需要的调剂内容就是图中红框标识出来的,这里对页面进行HTML解析,发现红框的HTML标签为DIV,class=”student-body font14” 。

同理,还用上神奇的Xpath来进行抓取。

并用innerHTML属性获取网页格式字符串。

就这样,就完成了调剂基本数据的抓取,把数据存到一个数据表里,进行分析。

SQL编程与数据分析

因为数据存在的MySQL数据库中,为了方便和更直观的展示出数据分析的思路和过程,这里采用的SQL语句进行数据查询与提取。

1.学校层次分析

首先分析,历年调剂高校的层次【985 211 双非】。

SQL代码为:

结果为:

之后,为了方便统计高校的层次分布,在外部再套上一层GROUP BY语句进行分类:

结果如下图所示,可以看出大量调剂学校来自于双非高校,但是考虑到211大学的总量为112所,985大学总量为39所,可以看出,接近62%的211高校都发布了调剂信息,所有的985高校都发布过调剂信息。

可以得出,调剂中还是有很大很大机会可以进入211,985高校的,每个高校都会发布招生机会,但是能不能把握住!就要看自己了!

这可能就是,机会就在眼前,能不能把握就看自己了。用Matplotlib画出来的饼状图如下图所示:

2.学校类型分析

接下来,看看各大高校的学校类别,都是什么类型的学校,这个简单,一个SQL解决。

哇,可以看到语言、政法、体育类的高校,调剂信息很少,都是个位数。而主要是理工、综合类型的高校调剂机会比较多,小同学们,这下在搜集高校调剂信息的时候,就可以更有侧重点了。

通过Matplotlib绘制出这个饼状图片:

3.学校地域分析

同理,对调剂学校所在的省市进行数据分析,得出如下柱状图:

可以看到调剂机会遍布全国,只要你认真把握,一定可以去的了自己理想的城市,寻找理想的TA!

4.专业/技能/领域分析

通过对专业进行分类筛选,绘制出专业云图,通过Jieba分词,与自建词典集合相似词语聚类算法,发现调剂中总共涉及的【技能/专业/领域】词汇达到6006种,真可谓是门类广阔啊,也是每个小众学科的福音。

其中几大热门专业和研究方向如下所示:经管仍是调剂中最吃香的专业,其次就是理工科了。本人就是生物医学工程专业出生的,在这里看到了自己的专业,还挺欣慰。

总结

经过从Selenium爬虫开发,到数据库Select查询,再到Matplotlib图表绘制,仅仅通过三大步骤,就可以发现考研调剂是一个机遇与风险并存的大事件,在这里全国所有985和超半数的211,几乎全部的高校都在向你敞开怀抱,每一个考生需要有充分的耐心去把握住属于自己的机会,不泄气,不骄不躁。

【end】

0 人点赞