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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

从网上爬取全国大学学校数据2020版(最新版,包含大部分常用字段)

發(fā)布時(shí)間:2024/8/1 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从网上爬取全国大学学校数据2020版(最新版,包含大部分常用字段) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 文章說明

現(xiàn)在跟教育沾邊的項(xiàng)目基本上都離不開“學(xué)校”的數(shù)據(jù),而全國大學(xué)的數(shù)據(jù)網(wǎng)上版本也非常之多,下載了很多個(gè)版本,浪費(fèi)了近100點(diǎn)C幣,最終得到的數(shù)據(jù)都不盡如人意,有些只有學(xué)校數(shù)據(jù)缺少其他重要的字段,有些只有部分學(xué)校,缺少很多學(xué)校。本篇文章的目的就是為了分享我獲取到的最新的全國大學(xué)學(xué)校數(shù)據(jù),數(shù)據(jù)非常的豐富,字段多達(dá)41個(gè),總共2934所,數(shù)據(jù)來源:中國教育在線

2. 爬取數(shù)據(jù)樣例展示

為了讓大家清楚的看到數(shù)據(jù)本身的樣子,這里給出幾個(gè)示例:

字段字段值字段含義
id140系統(tǒng)內(nèi)部自增ID
school_id_code4111010003學(xué)校標(biāo)識(shí)碼,全國唯一
school_code10003學(xué)校招生代碼,全國唯一
name清華大學(xué)學(xué)校名稱
type5000分類編碼
type_name綜合類分類名稱
school_type6000類型編碼
school_type_name普通本科類型名稱
school_nature36000性質(zhì)編碼
school_nature_name公辦性質(zhì)名稱
belong教育部隸屬于
f9851是否為985學(xué)校
f2111是否未211學(xué)校
num_subject39重點(diǎn)學(xué)科數(shù)量
num_master66碩士點(diǎn)數(shù)量
num_doctor58博士點(diǎn)數(shù)量
num_academician66院士人數(shù)
num_library400萬藏書數(shù)量
num_lab61重點(diǎn)實(shí)驗(yàn)室數(shù)量
province_id11所屬省份編碼
province_name北京所屬省份名稱
city_id1101所屬市編碼
city_name北京市所屬市名稱
county_id110108所屬區(qū)域編碼
town_name海淀區(qū)所屬區(qū)域名稱
create_date1911創(chuàng)辦年份
area5886.00學(xué)校占地面積,單位:畝
old_name原名
short北京清華,清華簡稱
ruanke_rank1
wsl_rank1
qs_rank1
xyh_rank2
dual_class_name雙一流
emailzsb@mail.tsinghua.edu.cn招生辦郵箱
address北京市海淀區(qū)清華園1號(hào)學(xué)校地址
postcode100084郵政編碼
sitehttp://www.join-tsinghua.edu.cn招生辦網(wǎng)址
school_sitehttps://www.tsinghua.edu.cn/publish/thu2018/index.html學(xué)校官網(wǎng)
phone010-62782051,010-62770334招生辦電話
content清華大學(xué)的前身清華學(xué)堂始建于1911年,1912年更名為清華學(xué)校,略…學(xué)校概況

說明:上面有4個(gè)學(xué)校排名字段筆者暫時(shí)還沒弄清楚具體是什么維度的排名,如果有知道的可以評(píng)論告知一下,不勝感激。

3. 如何爬取

現(xiàn)在把爬取數(shù)據(jù)的核心代碼分享給大家,筆者使用的是Java程序來爬取的,建議大家如果在爬取的時(shí)候也要注意每次爬取的間隔,太小有可能會(huì)被認(rèn)定為惡意請(qǐng)求被限制訪問。

3.1 選取爬取鏈接

爬取地址:https://static-data.eol.cn/www/school/1738/info.json

  • 路徑參數(shù)1738代表中國教育在線內(nèi)部系統(tǒng)的id,仔細(xì)觀察下教育在線數(shù)據(jù)可以發(fā)現(xiàn),這個(gè)編碼不會(huì)太大,如果不放心,可以設(shè)置大一點(diǎn)的數(shù)據(jù),如3600,用瀏覽器打開鏈接

    會(huì)發(fā)現(xiàn)請(qǐng)求是失敗的,大家可以嘗試一下3500,是有數(shù)據(jù)返回的。那么就可以通過1-3500來進(jìn)行循環(huán)的爬取,每次爬取是一所學(xué)校的詳情。可能有的人會(huì)說爬取https://api.eol.cn/gkcx/api/?access_token=&admissions=&central=&department=&dual_class=&f211=&f985=&is_dual_class=&keyword=&page=2&province_id=&request_type=1&school_type=&signsafe=&size=20&sort=view_total&type=&uri=apigkcx/api/school/hotlists,筆者最開始是爬取的這個(gè)地址,但后來發(fā)現(xiàn),鏈接太復(fù)雜,并且返回的數(shù)據(jù)沒有前者豐富。

3.2 爬取代碼

BufferedWriter writer = new BufferedWriter(new FileWriter(new File("D:/school.txt")));for (int i = 1; i < 3600; i++) {String url = "https://static-data.eol.cn/www/school/1738/info.json";ResponseEntity<String> results = restTemplate.getForEntity(url, String.class);TimeUnit.SECONDS.sleep(1);String result = results.getBody();writer.append(result).append("\n");System.out.println(result);}writer.flush();writer.close();
  • 說明:我這個(gè)爬取分2步,第一步是爬取數(shù)據(jù),將數(shù)據(jù)寫入到D:/school.txt,每所學(xué)校的數(shù)據(jù)以json字符串格式寫入到文件中,每所學(xué)校占一行。

3.2 寫入數(shù)據(jù)庫

首先,將數(shù)據(jù)從txt文件讀取出來,再拼接成sql語句,重新寫到sql文件中,最后通過navicat寫入到數(shù)據(jù)庫。這種爬取方式可以支持任何數(shù)據(jù)庫,只要寫一句insert的模板語句即可。

BufferedReader reader = new BufferedReader(new FileReader("D:/school.txt"));BufferedWriter writer = new BufferedWriter(new FileWriter(new File("D:/school.sql")));String line = null;String sql="INSERT INTO `usercenter_school` (`school_id`, `data_code`, `name`, `type`, `school_type`, `school_nature`, `belong`, `f985`, `f211`, `num_subject`, `num_master`, `num_doctor`, `num_academician`, `num_library`, `num_lab`, `province_id`, `province_name`, `city_id`, `city_name`, `county_id`, `town_name`, `create_date`, `area`, `old_name`, `short`, `ruanke_rank`, `wsl_rank`, `qs_rank`, `xyh_rank`, `level_name`, `type_name`, `school_type_name`, `school_nature_name`, `dual_class_name`, `email`, `address`, `postcode`, `site`, `school_site`, `phone`, `content`) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');";while (true) {line = reader.readLine();if (line == null) {break;}JSONObject detail= JSONObject.parseObject(line);String s=String.format(sql,detail.getString("id"),detail.getString("data_code"),detail.getString("name"),detail.getString("type"),detail.getString("school_type"),detail.getString("school_nature"),detail.getString("belong"),detail.getString("f985"),detail.getString("f211"),detail.getString("num_subject"),detail.getString("num_master"),detail.getString("num_doctor"),detail.getString("num_academician"),detail.getString("num_library"),detail.getString("num_lab"),detail.getString("province_id"),detail.getString("province_name"),detail.getString("city_id"),detail.getString("city_name"),detail.getString("county_id"),detail.getString("town_name"),detail.getString("create_date"),detail.getString("area"),detail.getString("old_name"),detail.getString("short"),detail.getString("ruanke_rank"),detail.getString("wsl_rank"),detail.getString("qs_rank"),detail.getString("xyh_rank"),detail.getString("level_name"),detail.getString("type_name"),detail.getString("school_type_name"),detail.getString("school_nature_name"),detail.getString("dual_class_name"),detail.getString("email"),detail.getString("address"),detail.getString("postcode"),detail.getString("site"),detail.getString("school_site"),detail.getString("phone"),detail.getString("content"));writer.append(s).append("\n");System.out.println(s);}reader.close();writer.flush();writer.close();

經(jīng)過上面的步驟,就已經(jīng)生成了sql文件,到此也就水到渠成了。
細(xì)心的讀者可能已經(jīng)發(fā)現(xiàn),生成的sql記錄,少了學(xué)校標(biāo)識(shí)碼school_id_code和學(xué)校代碼school_code字段。從中國教育在線網(wǎng)上爬取的數(shù)據(jù)中不包含這兩個(gè)字段,但筆者提供的數(shù)據(jù)中是包含這兩個(gè)字段的,筆者是從某某網(wǎng)站上下載的數(shù)據(jù),經(jīng)過表連接手段插入的學(xué)校標(biāo)識(shí)碼,但還是會(huì)有少部分學(xué)校不能關(guān)聯(lián),因此又從某網(wǎng)站手工的查詢剩余的學(xué)校,將標(biāo)識(shí)碼補(bǔ)齊(真的是手工,耗費(fèi)2小時(shí))。最后是校代碼,校代碼了解的讀者就會(huì)知道,校代碼是根據(jù)標(biāo)識(shí)碼生成的,因此有了標(biāo)識(shí)碼就自然有了校代碼。

4. 獲取筆者的完整數(shù)據(jù)

獲取數(shù)據(jù)方式有兩種:

  • 去筆者資源中心下載(筆者整理一份不容易,請(qǐng)給個(gè)好評(píng),謝謝)
  • 歡迎加入交流群:566654343
  • 總結(jié)

    以上是生活随笔為你收集整理的从网上爬取全国大学学校数据2020版(最新版,包含大部分常用字段)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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