• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X

python 搞代码 4年前 (2022-01-08) 20次浏览 已收录 0个评论
文章目录[隐藏]

高考结束了,接下来最重要的就是玩玩玩,然后准备报志愿吧.中国教育在线网显示国内目前共有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 # 运<b style="color:transparent">来源gao@!dai!ma.com搞$$代^@码!网</b>行函数 df_school = get_all_page(all_page_num=143) # 读出数据 df_school.to_excel('./data/全国高校数据.xlsx', index=False) 

五、运行代码

六、数据展示

七、数据可视化

1.各省市地区高校数量分布 柱形图:

地图

各个省的高校层次分布

全国高校类型分布

有了上面的数据,是不是对全国的高校有一定了解了

以上就是用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址