您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

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

51自学网 2021-10-30 22:29:25
  python
这篇教程用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X写得很实用,希望能帮到您。

一、获取url

打开中国教育在线网,按 F12,顶部选择NetWork,选择XHR

刷新页面,观察url,通过对Reponse的分析找到真正的url为:https://api.eol.cn/gkcx/api/

数据存储在Json中。

在这里插入图片描述

再点击Headers,查看请求参数

在这里插入图片描述

请求方式为POST

二、发送请求

拿到url,我们就可以利用requests模拟浏览器发送请求,拿到返回的Json数据。代码如下:

# 导入包import numpy as npimport pandas as pdimport requestsimport jsonfrom fake_useragent import UserAgentimport 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爬取数据并可视化内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net!


用python修改excel表某一列内容的操作方法
详解Python描述符的工作原理
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。