高考学子千千万,那么我国各省市的高校分布又是怎样的呢?全国哪个地方的高校最多?
我们分析了中国教育在线网站(https://gkcx.eol.cn/
)的高校数据,当中包含本科院校和高职(专科)院。
如何获取数据
我们使用Python获取了中国教育在线网站的高校数据,共2904条。以下展示数据获取部分代码:
https://gkcx.eol.cn/school/search
具体思路如下:
-
分析网页,通过翻页可以发现数据是动态加载的,因此通过Chrome浏览器进行抓包分析获取真实的URL请求地址,并确定请求方式(get还是post);
-
使用requests请求网页数据;
-
使用json解析并提取数据;
-
使用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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)
log.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)