带你用Python解读高考数据:全国哪里的高校最多?什么专业最热门?

江苏高校数量最多


高考学子千千万,那么我国各省市的高校分布又是怎样的呢?全国哪个地方的高校最多?

我们分析了中国教育在线网站(https://gkcx.eol.cn/)的高校数据,当中包含本科院校和高职(专科)院。

如何获取数据

我们使用Python获取了中国教育在线网站的高校数据,共2904条。以下展示数据获取部分代码:

https://gkcx.eol.cn/school/search

具体思路如下:

  1. 分析网页,通过翻页可以发现数据是动态加载的,因此通过Chrome浏览器进行抓包分析获取真实的URL请求地址,并确定请求方式(get还是post);

  2. 使用requests请求网页数据;

  3. 使用json解析并提取数据;

  4. 使用pandas将数据保存到本地

首先打开网址,使用Chrome浏览器的检查功能,切换到Network-XHR,点击翻页进行网络数据抓包,很容易发现数据都是被封装在json中的,如下图所示:

在这里插入图片描述

切换到Headers处,确定请求的方法为post请求,得到数据请求的URL地址,其中page参数代表页数,通过遍历即可获取所有数据。代码如下:

导入包

import numpy as np

import pandas as pd

import requests

import json

from fake_useragent import UserAgent

import time

获取一页

def get_one_page(page_num):

获取URL

url = ‘https://api.eol.cn/gkcx/api/’

构造headers

headers = {

‘User-Agent’: UserAgent().random,

‘Origin’: ‘https://gkcx.eol.cn’,

‘Referer’: ‘https://gkcx.eol.cn/school/search?province=&schoolflag=&recomschprop=’,

}

构造data

data = {

‘access_token’: “”,

‘admissions’: “”,

‘central’: “”,

‘department’: “”,

‘dual_class’: “”,

‘f211’: “”,

‘f985’: “”,

‘is_dual_class’: “”,

‘keyword’: “”,

‘page’: page_num,

‘province_id’: “”,

‘request_type’: 1,

‘school_type’: “”,

‘size’: 20,

‘sort’: “view_total”,

‘type’: “”,

‘uri’: “apigkcx/api/school/hotlists”,

}

发起请求

try:

response = requests.post(url=url, data=data, headers=headers)

except Exception as e:

print(e)

time.sleep(3)

response = requests.post(url=url, data=data, headers=headers)

解析获取数据

school_data = json.loads(response.text)[‘data’][‘item’]

学校名

school_name = [i.get(‘name’) for i in school_data]

隶属部门

belong = [i.get(‘belong’) for i in school_data]

高校层次

dual_class_name = [i.get(‘dual_class_name’) for i in school_data]

是否985

f985 = [i.get(‘f985’) for i in school_data]

是否211

f211 = [i.get(‘f211’) for i in school_data]

办学类型

level_name = [i.get(‘level_name’) for i in school_data]

院校类型

type_name = [i.get(‘type_name’) for i in school_data]

是否公办

nature_name = [i.get(‘nature_name’) for i in school_data]

人气值

view_total = [i.get(‘view_total’) for i in school_data]

省份

province_name = [i.get(‘province_name’) for i in school_data]

城市

city_name = [i.get(‘city_name’) for i in school_data]

区域

county_name = [i.get(‘county_name’) for i in school_data]

保存数据

df_one = pd.DataFrame({

‘school_name’: school_name,

‘belong’: belong,

‘dual_class_name’: dual_class_name,

‘f985’: f985,

‘f211’: f211,

‘level_name’: level_name,

‘type_name’: type_name,

‘nature_name’: nature_name,

‘view_total’: view_total,

‘province_name’: province_name,

‘city_name’: city_name,

‘county_name’: county_name,

})

return df_one

获取多页

def get_all_page(all_page_num):

存储表

df_all = pd.DataFrame()

循环页数

for i in range(all_page_num):

打印进度

print(f’正在获取第{i + 1}页的高校信息’)

调用函数

df_one = get_one_page(page_num=i+1)

追加

df_all = df_all.append(df_one, ignore_index=True)

随机休眠

time.sleep(np.random.uniform(2))

return df_all

if name == ‘main’:

运行函数

df = get_all_page(all_page_num=148)

通过上述程序,共获取到2904条数据,数据预览如下:

df.head()

在这里插入图片描述

分析结果

全国院校分布:江苏高校数量第一

在这里插入图片描述

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

log.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

img
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值