日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

其实特简单,1分钟爬取全国高校信息并制成大屏可视化

發(fā)布時(shí)間:2024/3/26 编程问答 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 其实特简单,1分钟爬取全国高校信息并制成大屏可视化 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

大家好,記得當(dāng)初高考完,我選學(xué)校的時(shí)候是在書(shū)店買的高校信息排名的書(shū),然而書(shū)中的信息都是很久之前的,并沒(méi)有什么太大幫助。

【注】文末提供技術(shù)交流群

干貨推薦

  • 深度盤點(diǎn):這20套可視化炫酷大屏真香啊(附源碼)
  • 值得收藏,這6種制作競(jìng)賽動(dòng)圖的方法妙不可言
  • 絕了,這6個(gè)精挑細(xì)選的機(jī)器學(xué)習(xí)資料簡(jiǎn)直太香了
  • Python數(shù)據(jù)分析三劍客真香啊,還有高清思維導(dǎo)圖
  • Python編程從入門到實(shí)戰(zhàn),看這一篇足夠了

今天就來(lái)帶大家爬點(diǎn)真正有用的東西,全國(guó)高校信息,涵蓋絕大多數(shù)高校,并制作可視化看板。話不多說(shuō),進(jìn)入正題!

數(shù)據(jù)爬取

地址:https://www.gaokao.cn/school/140F12 打開(kāi)開(kāi)發(fā)者工具,通過(guò)抓包工具很輕松就獲取到了 json 文件。我們直接對(duì)該鏈接發(fā)起請(qǐng)求,就可以獲取對(duì)應(yīng)大學(xué)的信息。

另外對(duì)比發(fā)現(xiàn) https://static-data.eol.cn/www/2.0/school/140/info.json,關(guān)鍵參數(shù) 140 為學(xué)校ID,但I(xiàn)D不是連續(xù)的,所以,我們爬取時(shí)只能根據(jù)大致的學(xué)校數(shù)量進(jìn)行爬取。

爬取代碼

導(dǎo)入模塊

import aiohttp import asyncio import pandas as pd from pathlib import Path from tqdm import tqdm import time

簡(jiǎn)單說(shuō)明一下主要模塊的用途:

  • aiohttp:可以實(shí)現(xiàn)單線程并發(fā) IO 操作。如果僅用在客戶端,發(fā)揮的威力不大,只是為了搭配 asyncio 來(lái)使用,因?yàn)?requests 不支持異步。如果把 asyncio 用在服務(wù)器端,例如 Web 服務(wù)器,由于 HTTP 連接就是 IO 操作,因此可以用 單線程 + coroutine 實(shí)現(xiàn)多用戶的高并發(fā)支持。

  • asyncio:提供了完善的異步IO支持,可以將多個(gè)協(xié)程(coroutine)封裝成一組 Task 然后并發(fā)執(zhí)行。

  • pandas:將爬取的數(shù)據(jù)轉(zhuǎn)為 DataFrame 類型,并生成 csv 文件。

  • pathlib:面向?qū)ο蟮木幊谭绞絹?lái)表示文件系統(tǒng)路徑。

  • tqdm:只需使用 tqdm(iterable) 包裝任何可迭代對(duì)象,就能讓你的循環(huán)生成一個(gè)智能進(jìn)度條。

生成URL序列

通過(guò)指定的 URL 模板與 max_id 生成 URL 序列,這里添加了一個(gè)去重操作,如果之前已采集過(guò)高校信息,它會(huì)根據(jù)同目錄下的文件,剔除已采集的高校ID,僅采集未獲取過(guò)的高校信息。

def get_url_list(max_id):url = 'https://static-data.eol.cn/www/2.0/school/%d/info.json'not_crawled = set(range(max_id))if Path.exists(Path(current_path, 'college_info.csv')):df = pd.read_csv(Path(current_path, 'college_info.csv'))not_crawled -= set(df['學(xué)校id'].unique())return [url%id for id in not_crawled]

采集JSON數(shù)據(jù)

通過(guò)協(xié)程對(duì)URL序列發(fā)出請(qǐng)求,注意要限制并發(fā)量,Window:500,Linux:1024。

async def get_json_data(url, semaphore):async with semaphore:headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',}async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=False), trust_env=True) as session:try:async with session.get(url=url, headers=headers, timeout=6) as response:# 更改相應(yīng)數(shù)據(jù)的編碼格式response.encoding = 'utf-8'# 遇到IO請(qǐng)求掛起當(dāng)前任務(wù),等IO操作完成執(zhí)行之后的代碼,當(dāng)協(xié)程掛起時(shí),事件循環(huán)可以去執(zhí)行其他任務(wù)。json_data = await response.json()if json_data != '':return save_to_csv(json_data['data'])except:return None

數(shù)據(jù)解析保存

JSON數(shù)據(jù)中的字段有很多,大家可以根據(jù)自己的情況解析保存自己需要的字段。

def save_to_csv(json_info):save_info = {}save_info['學(xué)校id'] = json_info['school_id'] # 學(xué)校idsave_info['學(xué)校名稱'] = json_info['name'] # 學(xué)校名字level = ""if json_info['f985'] == '1' and json_info['f211'] == '1':level += "985 211"elif json_info['f211'] == '1':level += "211"else:level += json_info['level_name']save_info['學(xué)校層次'] = level # 學(xué)校層次save_info['軟科排名'] = json_info['rank']['ruanke_rank'] # 軟科排名save_info['校友會(huì)排名'] = json_info['rank']['xyh_rank'] # 校友會(huì)排名save_info['武書(shū)連排名'] = json_info['rank']['wsl_rank'] # 武書(shū)連排名save_info['QS世界排名'] = json_info['rank']['qs_world'] # QS世界排名save_info['US世界排名'] = json_info['rank']['us_rank'] # US世界排名save_info['學(xué)校類型'] = json_info['type_name'] # 學(xué)校類型save_info['省份'] = json_info['province_name'] # 省份save_info['城市'] = json_info['city_name'] # 城市名稱save_info['所處地區(qū)'] = json_info['town_name'] # 所處地區(qū)save_info['招生辦電話'] = json_info['phone'] # 招生辦電話save_info['招生辦官網(wǎng)'] = json_info['site'] # 招生辦官網(wǎng)df = pd.DataFrame(save_info, index=[0])header = False if Path.exists(Path(current_path, 'college_info.csv')) else Truedf.to_csv(Path(current_path, 'college_info.csv'), index=False, mode='a', header=header)

調(diào)度程序

調(diào)度整個(gè)采集程序。獲取URL>>限制并發(fā)量>>創(chuàng)建任務(wù)對(duì)象>>掛起任務(wù)

async def main(loop):# 獲取url列表url_list = get_url_list(5000)# 限制并發(fā)量semaphore = asyncio.Semaphore(500)# 創(chuàng)建任務(wù)對(duì)象并添加到任務(wù)列表中tasks = [loop.create_task(get_json_data(url, semaphore)) for url in url_list]# 掛起任務(wù)列表for t in tqdm(asyncio.as_completed(tasks), total=len(tasks)):await t

以上就是程序運(yùn)行的主要代碼。

運(yùn)行效果

這里采集ID在5000以內(nèi)的高校信息,如果要盡可能多的采集高校信息的話,建議多次運(yùn)行,直至無(wú)新增數(shù)據(jù)。

第一次運(yùn)行(采集到2140行)第二次運(yùn)行(采集到680行)通過(guò)兩次運(yùn)行共采集到2820行數(shù)據(jù)。下面我們開(kāi)始可視化部分。

Tableau可視化

相比于其他的可視化工具或者第三方繪圖庫(kù),我更傾向于 Tableau,上手十分簡(jiǎn)單,想要了解的可以看一下 Tableau Public,這里發(fā)布了很多大牛的作品。

https://public.tableau.com/app/discover

它唯一的缺點(diǎn)就是收費(fèi),如果是學(xué)生的話,可以免費(fèi)使用,否則,建議先用免費(fèi)版的 Tableau Public,等到充分了解后再考慮付費(fèi)。

對(duì)于本次的可視化,總共繪制有四個(gè)圖表。

高校數(shù)量分布地圖

高校數(shù)量排名前三的分別是江蘇、廣東、河南(僅供參考)

軟科高校排名TOP10

根據(jù)軟科排名來(lái)看,全國(guó)TOP10的高校絕大多數(shù)都是綜合類,理工類的只有第七名的中國(guó)科學(xué)技術(shù)大學(xué)。

高校層次分布

從采集的數(shù)據(jù)中來(lái)看, 211 的高校占比本科院校約 9.5% ,985 的高校占比本科院校約 3.5%,果然是鳳毛麟角。

高校類型分布

學(xué)校類型主要還是理工類和綜合類,二者數(shù)量基本持平,都遙遙領(lǐng)先于其他的類型。數(shù)量第二層級(jí)為財(cái)經(jīng)類,師范類,醫(yī)藥類。

合成看板

將上述的工作表合并成一個(gè)看板,過(guò)程十分簡(jiǎn)單,只需要將圖標(biāo)拖拽到指定位置即可。再添加一個(gè)篩選操作,點(diǎn)擊地圖中的某個(gè)省份聯(lián)動(dòng)其他工作表。

看板已發(fā)布到 Tableau Public。可以在線編輯,或下載整個(gè)可視化工作包,鏈接如下:
https://public.tableau.com/shared/ZCXWTK6SP?:display_count=n&:origin=viz_share_link

這就是今天要和大家分享的內(nèi)容,包含數(shù)據(jù)采集->數(shù)據(jù)處理->可視化。

小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過(guò)程中,有遇到任何問(wèn)題,歡迎加入Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。

技術(shù)交流

歡迎轉(zhuǎn)載、收藏、有所收獲點(diǎn)贊支持一下!

目前開(kāi)通了技術(shù)交流群,群友已超過(guò)2000人,添加時(shí)最好的備注方式為:來(lái)源+興趣方向,方便找到志同道合的朋友

  • 方式①、發(fā)送如下圖片至微信,長(zhǎng)按識(shí)別,后臺(tái)回復(fù):加群;
  • 方式②、添加微信號(hào):dkl88191,備注:來(lái)自CSDN
  • 方式③、微信搜索公眾號(hào):Python學(xué)習(xí)與數(shù)據(jù)挖掘,后臺(tái)回復(fù):加群

總結(jié)

以上是生活随笔為你收集整理的其实特简单,1分钟爬取全国高校信息并制成大屏可视化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 熟女肥臀白浆大屁股一区二区 | 国产人妻精品一区二区三 | av网站观看 | 澳门黄色 | 6996电视影片免费看 | 综合久久久久 | jizz在亚洲 | 一本久道久久综合 | 手机看片久久久 | av免费播放网站 | 亚洲天堂v | 久久夜夜夜 | 粉嫩av一区二区白浆 | 网友自拍第一页 | 蜜臀一区二区三区精品免费视频 | 偷偷久久| 亚洲精品影院 | 免费在线看黄的网站 | av高清在线免费观看 | 午夜影院在线观看免费 | 国产夜色精品一区二区av | 黄色a级免费 | 久久中文字幕电影 | 有机z中国电影免费观看 | 国产成人无码www免费视频播放 | 波多野结衣在线一区二区 | 欧美另类视频 | 亚洲春色av | 亚洲三级大片 | 欧美99| 九七久久| 都市激情 自拍偷拍 | 亚洲v国产v欧美v久久久久久 | 一级全黄男女免费大片 | 欧美激情一区二区三区免费观看 | 婷婷综合五月天 | 亚洲欧美精品aaaaaa片 | 奇米av在线 | 久久久69 | 激情丁香 | 日本艳妇 | 黄色aaa毛片 | 亚洲精品天堂成人片av在线播放 | 97caop| 国产一区二区免费看 | 四虎视频国产精品免费入口 | 一区二区在线影院 | 欧美日韩精品国产 | 亚洲不卡在线视频 | 鬼灭之刃柱训练篇在线观看 | 一级毛毛片 | 你操综合 | 久久久久综合网 | 不卡中文字幕在线 | 亚洲视频一 | 日本在线小视频 | 黄色无遮挡网站 | 91视频进入 | 黄色一级a毛片 | 男女啪啪网站 | av免费亚洲 | 日本黄色短片 | 久久久久久久极品 | 久久久wwww | 欧美双性人妖o0 | 少妇高潮视频 | 日韩激情网站 | 婷婷六月网 | 女人高潮娇喘1分47秒 | 精品人妻一区二区三区麻豆91 | 国模大尺度自拍 | 免费观看一区二区三区 | 亚洲啊啊 | 人妻无码一区二区三区免费 | 国产wwwwww| 国产女人被狂躁到高潮小说 | 国产麻豆精品在线 | 毛片看看| 激情福利 | 国产经典久久久 | 国产另类在线 | 新久草视频 | 婷婷爱五月天 | 成人免费一级视频 | 狠狠躁天天躁夜夜躁婷婷 | 亚洲国产av一区 | 美女视频黄免费 | 亚洲人人爽 | 欧美性视频在线播放 | 天天射网 | 玖玖国产| 性感美女被爆操 | 正在播放久久 | 求av网站 | 久久国产乱子伦精品 | 男女网站在线观看 | 中文字幕11页中文字幕11页 | 国产欧美日韩二区 | 国产三级大片 |