数据分析:中国高校更名历史 Python

  上周领了新任务,做国内高校改名历史的统计,这个挺有意思,以下是我任务完成过程,和大家分享。
一. 数据收集
  数据需求:目前已有高校校名,各高校改名历史记录
  高校校名数据来源:尝试从高校排名网站(iPIN),中国教育和科研计算机网等抓取,但高校名不全,前者709,后者1394,最后从教育部找到一份名单:“2015年全国高等学校名单”,基于教育部的信息比较权威可靠,本人想法是抓取教育部发布的教发函来收集高校改名信息。
  高校改名数据来源:教育部信息综合搜索,鉴于教育部发布的信息众多,且教发函格式不一,本人分成几个类别抓取:合并,更名,建立,在xx基础上建立,转设。然后根据搜索跳转的URL,抓取不同类别,大概情况如图:
  从截图可以观察到跳转的URL,所以更换掉关键词部分,重新查询便能获得新的结果,再根据页数跳转抓取所有有关通知。具体实现细节比较繁琐,有兴趣同学可以看github上的代码:最后数据结果如下:
  1. 高校校名:普通高等学校2553所
  2. 更名历史:教育部1995-2015发布的教发函,约665份,教育部公示1990-2006年5月高校合并情况,431条记录。
二. 数据分析

  接下来就是对数据进行清洗,规则处理的过程,虽然没用到什么算法,但满满都是泪啊~~基本大家都能看懂,详细代码点这里,大概流程如下:

import re
import string
import json

sch = {} #学校更名历史字典
remain_sch = {}  #添加的学校

#处理高校合并通知
def dealCombineRP(rp_file):

#处理高校建立通知,原通知不完整,数据已从通知文件中补全
def dealFoundRP(rp_file):

#处理高校更名通知
def dealRenameRP(rp_file):

#处理高校转设通知
def dealSetupRP(rp_file):

#处理高校建立通知
def dealUpgradeRP(rp_file):

#处理教育部合并通知:1990-20060515
def dealCombineFile(combine_file):

#去重处理,去掉重复更名(合并)
def removeDuplicate():

#导入学校名
def loadSchoolName():

#结果保存为json格式
def showResult()

def main():
    global sch
    global remain_sch

    sch_file = "./data/sch_name/sch_name_gov.txt"
    rp_rename_file = "./data/reports/reports_rename.txt"
    rp_upgrade_file = "./data/reports/reports_upgrade.txt"
    rp_setup_file = "./data/reports/reports_setup.txt"
    rp_found_file = "./data/reports/reports_found.txt"
    rp_combine_file = "./data/reports/reports_combine.txt"
    school_combine_since1990 = "./data/reports/school_combine_since1990.txt"

    sch = loadSchoolName(sch_file)
    #print "before:",len(sch)

    dealSetupRP(rp_setup_file)
    dealCombineFile(school_combine_since1990)
    dealCombineRP(rp_combine_file)    
    dealFoundRP(rp_found_file)
    dealRenameRP(rp_rename_file)
    dealUpgradeRP(rp_upgrade_file)

    #print "after:",len(sch)
    removeDuplicate()
    showResult()

if __name__ == '__main__':
    main()

 三. 分析结果

  标记结果:原文件学校2554个,增加至2690个,总共标记828个学校。很多专科学校也添加进去了~基本上完成任务。估计做成列表也是挺壮观的,下面是部分结果:

{  
  "广东海洋大学": [
        "湛江农业专科学校",
        "湛江海洋大学",
        "湛江水产学院"
    ],
    "广东海洋大学寸金学院": [],
    "广东环境保护工程职业学院": [],
    "广东理工学院": [
        "肇庆科技职业技术学院"
    ],
    "广东理工职业学院": [],
    "广东生态工程职业学院": [],
    "广东白云学院": [],
    "广东省外语艺术职业学院": [],
    "广东石油化工学院": [
        "茂名学院",
        "广东石油化工高等专科学校",
        "广东省茂名教育学院",
        "茂名石油工业公司职工大学"
    ],
    "广东碧桂园职业学院": [],
    "广东科学技术职业学院": [],
    "广东科技学院": [
        "东莞南博职业技术学院"
    ],
    "广东科贸职业学院": [],
    "广东第二师范学院": [
        "广东教育学院"
    ],
    "广东职业技术学院": [],
    "广东舞蹈戏剧职业学院": [],
    "广东药学院": [],
    "广东行政职业学院": [],
    "广东警官学院": [
        "广东公安高等专科学校"
    ],
    "广东财经大学": [
        "广东商学院"
    ],
    "广东财经大学华商学院": [],
    "广东轻工职业技术学院": [
        "广州轻工业学校"
    ],
    "广东邮电职业技术学院": [],
    "广东金融学院": [
        "广州金融高等专科学校"
    ],
}

  基本任务就是这样,完整项目见这里schoolCard,有问题的朋友可以交流。

参考资料:

1.爱拼网iPIN:http://www.ipin.com/school/ranking.do

2.中国教育和科研计算机网:http://ziyuan.eol.cn/list.php?listid=128

3.教育部:http://www.moe.gov.cn/jyb_sy/

posted on 2015-07-18 20:46  bbking  阅读(2134)  评论(1编辑  收藏  举报

导航