用Python爬取各大高校并可視化幫弟弟選大學(xué),弟弟直呼牛X
一、獲取url
打開(kāi)中國(guó)教育在線網(wǎng),按 F12,頂部選擇NetWork,選擇XHR
刷新頁(yè)面,觀察url,通過(guò)對(duì)Reponse的分析找到真正的url為:https://api.eol.cn/gkcx/api/
數(shù)據(jù)存儲(chǔ)在Json中。

再點(diǎn)擊Headers,查看請(qǐng)求參數(shù)

請(qǐng)求方式為POST
二、發(fā)送請(qǐng)求
拿到url,我們就可以利用requests模擬瀏覽器發(fā)送請(qǐng)求,拿到返回的Json數(shù)據(jù)。代碼如下:
# 導(dǎo)入包
import numpy as np
import pandas as pd
import requests
import json
from fake_useragent import UserAgent
import time
# 獲取一頁(yè)
def get_one_page(page_num):
# 獲取URL
url = 'https://api.eol.cn/gkcx/api/'
# 構(gòu)造headers
headers = {
'User-Agent': UserAgent().random,
'Origin': 'https://gkcx.eol.cn',
'Referer': 'https://gkcx.eol.cn/school/search?province=&schoolflag=&recomschprop=',
}
# 構(gòu)造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",
}
# 發(fā)起請(qǐng)求
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數(shù)據(jù)
根據(jù)Response返回的Json格式,解析出我們想要的內(nèi)容,代碼如下:
# 解析獲取數(shù)據(jù)
school_data = json.loads(response.text)['data']['item']
# 學(xué)校名
school_name = [i.get('name') for i in school_data]
# 隸屬部門(mén)
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]
# 辦學(xué)類(lèi)型
level_name = [i.get('level_name') for i in school_data]
# 院校類(lèi)型
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]
# 區(qū)域
county_name = [i.get('county_name') for i in school_data]
# 保存數(shù)據(jù)
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
先將數(shù)據(jù)存入Pandas,用于做數(shù)據(jù)分析,再寫(xiě)入Excel存儲(chǔ)。
# 獲取多頁(yè)
def get_all_page(all_page_num):
# 存儲(chǔ)表
df_all = pd.DataFrame()
# 循環(huán)頁(yè)數(shù)
for i in range(all_page_num):
# 打印進(jìn)度
print(f'正在獲取第{i + 1}頁(yè)的高校信息')
# 調(diào)用函數(shù)
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
# 運(yùn)行函數(shù)
df_school = get_all_page(all_page_num=143)
# 讀出數(shù)據(jù)
df_school.to_excel('./data/全國(guó)高校數(shù)據(jù).xlsx', index=False)
五、運(yùn)行代碼

六、數(shù)據(jù)展示

七、數(shù)據(jù)可視化
1.各省市地區(qū)高校數(shù)量分布 柱形圖:

地圖

各個(gè)省的高校層次分布

全國(guó)高校類(lèi)型分布

有了上面的數(shù)據(jù),是不是對(duì)全國(guó)的高校有一定了解了
到此這篇關(guān)于用Python爬取各大高校并可視化幫弟弟選大學(xué),弟弟直呼牛X的文章就介紹到這了,更多相關(guān)Python爬取數(shù)據(jù)并可視化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python Pandas數(shù)據(jù)中對(duì)時(shí)間的操作
這篇文章主要介紹了Python Pandas數(shù)據(jù)中對(duì)時(shí)間的操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
聊聊prod()與cumprod()區(qū)別cumsum()
這篇文章主要介紹了prod()與cumprod()區(qū)別cumsum(),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
python接口自動(dòng)化之正則用例參數(shù)化的示例詳解
這篇文章主要介紹了python接口自動(dòng)化之正則用例參數(shù)化,它是一個(gè)特殊的字符序列,它能幫助你方便的檢查一個(gè)字符串是否與某種模式匹配,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
python中@contextmanager實(shí)例用法
在本篇文章里小編給大家整理的是一篇關(guān)于python中@contextmanager實(shí)例用法,對(duì)此有興趣的朋友們可以學(xué)習(xí)下。2021-02-02
Python實(shí)現(xiàn)拷貝/刪除文件夾的方法詳解
這篇文章主要介紹了Python實(shí)現(xiàn)拷貝/刪除文件夾的方法,涉及Python針對(duì)文件夾的遞歸、遍歷、拷貝、刪除等相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-08-08
解決pytorch讀取自制數(shù)據(jù)集出現(xiàn)過(guò)的問(wèn)題
這篇文章主要介紹了解決pytorch讀取自制數(shù)據(jù)集出現(xiàn)過(guò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
django xadmin 管理器常用顯示設(shè)置方式
這篇文章主要介紹了django xadmin 管理器常用顯示設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
pytorch?dataset實(shí)戰(zhàn)案例之讀取數(shù)據(jù)集的代碼
這篇文章主要介紹了pytorch?dataset實(shí)戰(zhàn)案例讀取數(shù)據(jù)集的相關(guān)知識(shí),這段代碼可以作為讀取數(shù)據(jù)集的一個(gè)DataSet類(lèi)的基礎(chǔ)類(lèi),可以擴(kuò)充進(jìn)行修改,以后有類(lèi)似需要可以拿過(guò)來(lái)修改,本文結(jié)合實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下2022-10-10

