人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

用Python爬取各大高校并可視化幫弟弟選大學(xué),弟弟直呼牛X

發(fā)布日期:2022-03-13 13:34 | 文章來源:CSDN

一、獲取url

打開中國教育在線網(wǎng),按 F12,頂部選擇NetWork,選擇XHR

刷新頁面,觀察url,通過對(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
# 獲取一頁
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]
 # 隸屬部門
 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é)類型
 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]
 # 區(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ù)分析,再寫入Excel存儲(chǔ)。

# 獲取多頁
def get_all_page(all_page_num):
 # 存儲(chǔ)表
 df_all = pd.DataFrame()
 # 循環(huán)頁數(shù)
 for i in range(all_page_num):
  # 打印進(jìn)度
  print(f'正在獲取第{i + 1}頁的高校信息')
  # 調(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/全國高校數(shù)據(jù).xlsx', index=False)

五、運(yùn)行代碼

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

七、數(shù)據(jù)可視化

1.各省市地區(qū)高校數(shù)量分布 柱形圖:

地圖

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

全國高校類型分布

有了上面的數(shù)據(jù),是不是對(duì)全國的高校有一定了解了

到此這篇關(guān)于用Python爬取各大高校并可視化幫弟弟選大學(xué),弟弟直呼牛X的文章就介紹到這了,更多相關(guān)Python爬取數(shù)據(jù)并可視化內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

美國穩(wěn)定服務(wù)器

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對(duì)1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部