从网上爬取全国大学学校数据2020版(最新版,包含大部分常用字段) | 您所在的位置:网站首页 › 各个大学英文名称 › 从网上爬取全国大学学校数据2020版(最新版,包含大部分常用字段) |
1. 文章说明
现在跟教育沾边的项目基本上都离不开“学校”的数据,而全国大学的数据网上版本也非常之多,下载了很多个版本,浪费了近100点C币,最终得到的数据都不尽如人意,有些只有学校数据缺少其他重要的字段,有些只有部分学校,缺少很多学校。本篇文章的目的就是为了分享我获取到的最新的全国大学学校数据,数据非常的丰富,字段多达41个,总共2934所,数据来源:中国教育在线 2. 爬取数据样例展示为了让大家清楚的看到数据本身的样子,这里给出几个示例: 字段字段值字段含义id140系统内部自增IDschool_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_rank1wsl_rank1qs_rank1xyh_rank2dual_class_name双一流[email protected]招生办邮箱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,用浏览器打开链接![]() 首先,将数据从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 |
CopyRight 2018-2019 实验室设备网 版权所有 |