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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

1. 文章說明

現在跟教育沾邊的項目基本上都離不開“學?!钡臄祿?#xff0c;而全國大學的數據網上版本也非常之多,下載了很多個版本,浪費了近100點C幣,最終得到的數據都不盡如人意,有些只有學校數據缺少其他重要的字段,有些只有部分學校,缺少很多學校。本篇文章的目的就是為了分享我獲取到的最新的全國大學學校數據,數據非常的豐富,字段多達41個,總共2934所,數據來源:中國教育在線

2. 爬取數據樣例展示

為了讓大家清楚的看到數據本身的樣子,這里給出幾個示例:

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

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

3. 如何爬取

現在把爬取數據的核心代碼分享給大家,筆者使用的是Java程序來爬取的,建議大家如果在爬取的時候也要注意每次爬取的間隔,太小有可能會被認定為惡意請求被限制訪問。

3.1 選取爬取鏈接

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

  • 路徑參數1738代表中國教育在線內部系統的id,仔細觀察下教育在線數據可以發現,這個編碼不會太大,如果不放心,可以設置大一點的數據,如3600,用瀏覽器打開鏈接

    會發現請求是失敗的,大家可以嘗試一下3500,是有數據返回的。那么就可以通過1-3500來進行循環的爬取,每次爬取是一所學校的詳情??赡苡械娜藭f爬取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,筆者最開始是爬取的這個地址,但后來發現,鏈接太復雜,并且返回的數據沒有前者豐富。

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();
  • 說明:我這個爬取分2步,第一步是爬取數據,將數據寫入到D:/school.txt,每所學校的數據以json字符串格式寫入到文件中,每所學校占一行。

3.2 寫入數據庫

首先,將數據從txt文件讀取出來,再拼接成sql語句,重新寫到sql文件中,最后通過navicat寫入到數據庫。這種爬取方式可以支持任何數據庫,只要寫一句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();

經過上面的步驟,就已經生成了sql文件,到此也就水到渠成了。
細心的讀者可能已經發現,生成的sql記錄,少了學校標識碼school_id_code和學校代碼school_code字段。從中國教育在線網上爬取的數據中不包含這兩個字段,但筆者提供的數據中是包含這兩個字段的,筆者是從某某網站上下載的數據,經過表連接手段插入的學校標識碼,但還是會有少部分學校不能關聯,因此又從某網站手工的查詢剩余的學校,將標識碼補齊(真的是手工,耗費2小時)。最后是校代碼,校代碼了解的讀者就會知道,校代碼是根據標識碼生成的,因此有了標識碼就自然有了校代碼。

4. 獲取筆者的完整數據

獲取數據方式有兩種:

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

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。