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

 更新时间:2021年06月10日 15:48:44   作者:一条IT  
高考结束了,接下来最重要的就是玩玩玩,然后准备报志愿吧.中国教育在线网显示国内目前共有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爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X的文章就介绍到这了,更多相关Python爬取数据并可视化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python Pandas数据中对时间的操作

    Python Pandas数据中对时间的操作

    这篇文章主要介绍了Python Pandas数据中对时间的操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 聊聊prod()与cumprod()区别cumsum()

    聊聊prod()与cumprod()区别cumsum()

    这篇文章主要介绍了prod()与cumprod()区别cumsum(),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • python 表格打印代码实例解析

    python 表格打印代码实例解析

    这篇文章主要介绍了python 表格打印代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • python如何查看微信消息撤回

    python如何查看微信消息撤回

    这篇文章主要为大家详细介绍了python实现查看微信消息撤回的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • python接口自动化之正则用例参数化的示例详解

    python接口自动化之正则用例参数化的示例详解

    这篇文章主要介绍了python接口自动化之正则用例参数化,它是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • python中@contextmanager实例用法

    python中@contextmanager实例用法

    在本篇文章里小编给大家整理的是一篇关于python中@contextmanager实例用法,对此有兴趣的朋友们可以学习下。
    2021-02-02
  • Python实现拷贝/删除文件夹的方法详解

    Python实现拷贝/删除文件夹的方法详解

    这篇文章主要介绍了Python实现拷贝/删除文件夹的方法,涉及Python针对文件夹的递归、遍历、拷贝、删除等相关操作技巧与注意事项,需要的朋友可以参考下
    2018-08-08
  • 解决pytorch读取自制数据集出现过的问题

    解决pytorch读取自制数据集出现过的问题

    这篇文章主要介绍了解决pytorch读取自制数据集出现过的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • django xadmin 管理器常用显示设置方式

    django xadmin 管理器常用显示设置方式

    这篇文章主要介绍了django xadmin 管理器常用显示设置方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • pytorch dataset实战案例之读取数据集的代码

    pytorch dataset实战案例之读取数据集的代码

    这篇文章主要介绍了pytorch dataset实战案例读取数据集的相关知识,这段代码可以作为读取数据集的一个DataSet类的基础类,可以扩充进行修改,以后有类似需要可以拿过来修改,本文结合实例代码给大家详细讲解,需要的朋友可以参考下
    2022-10-10

最新评论