哈嘍,大家好,我是一條,
高考第一天已經結束,高考之后學子和家長們又會迎來第二個難題——報志愿,
中國教育在線網顯示國內目前共有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.各省市地區高校數量分布
柱形圖:

地圖

各個省的高校層次分布

全國高校型別分布

有了上面的資料,是不是對全國的高校有一定了解了
表弟看了直呼”牛X“
你覺得呢,別忘了一鍵三連哦!
我是一條,一個在互聯網摸爬滾打的程式員,
道阻且長,行則將至,
大家的 【點贊,收藏,關注】 就是一條創作的最大動力,我們下期見!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/286394.html
標籤:python
