一、获取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爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X的文章就介绍到这了,更多相关Python爬取数据并可视化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:Python爬虫实战之爬取京东商品数据并实实现数据可视化Python爬取股票信息,并可视化数据的示例Python爬取数据并实现可视化代码解析python如何爬取网站数据并进行数据可视化
