利用Python爬取各大高校信息并可视化分析,让你填志愿选学校不再迷茫
Posted yunyun云芸
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用Python爬取各大高校信息并可视化分析,让你填志愿选学校不再迷茫相关的知识,希望对你有一定的参考价值。
高考结束了,接下来最重要的就是玩玩玩,然后准备报志愿吧。
关于学校的填报
不管是能填几个平行志愿,一定要把所有志愿和专业都填上,不然滑档都没地方给你哭的。但一定要量力而行,切忌好高骛远,选报志愿留有余地,参考各校专业录取的平均分、位次。
那句口决要牢记。冲一冲、稳一稳、保一保、垫一垫。
“冲一冲”把有希望够得着的理想学校作为A志愿。
“稳一稳”把与自己成绩门当户对的学校作为中间段。
“保一保”把比自己成绩稍低点的学校作为后半段。
“垫一垫”把最后一两个志愿学校作为垫底学校。
这样的话,几所学校就形成了梯度配置顺序,不过要注意冲一冲,要慎重要有一定把握,不能盲目乱冲,中国教育在线网显示国内目前共有2857所高等院校,报一个理想的学校简直是千里挑一,今天小编就用Python分析一下目前国内的大学信息,需要的朋友可以参考下。
一、获取url
打开中国教育在线网,按 F12,顶部选择NetWork,选择XHR
刷新页面,观察url,通过对Reponse的分析找到真正的url为:https://api.eol.cn/gkcx/api/
数据存储在Json中。
再点击Headers,查看请求参数
请求方式为POST
二、发送请求
拿到url,我们就可以利用requests模拟浏览器发送请求,拿到返回的Json数据。代码如下:
# 导入包
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)
三、解析json数据
根据Response返回的Json格式,解析出我们想要的内容,代码如下:
# 解析获取数据
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
四、存入Excel
先将数据存入Pandas,用于做数据分析,再写入Excel存储。
# 获取多页
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
# 运行函数
df_school = get_all_page(all_page_num=143)
# 读出数据
df_school.to_excel('./data/全国高校数据.xlsx', index=False)
五、运行代码
六、数据展示
七、数据可视化
1.各省市地区高校数量分布 柱形图:
地图
各个省的高校层次分布
全国高校类型分布
①兼职交流,行业咨询、大佬在线专业解答有
②Python开发环境安装教程有
③Python400集自学视频有
④软件开发常用词汇有
⑤Python学习路线图有
⑥3000多本Python电子书有
如果你用得到的话可以直接拿走,在我的QQ技术交流群里群号:675240729(纯技术交流和资源共享,广告勿入)以自助拿走
文章到这里结束了,祝所有高考生都能报上自己心仪的大学和专业,感谢观看,更多Python精彩内容可以关注小编看小编主页,或点击上面领取福利满满。
以上是关于利用Python爬取各大高校信息并可视化分析,让你填志愿选学校不再迷茫的主要内容,如果未能解决你的问题,请参考以下文章