改进版:
import requests from bs4 import BeautifulSoup import bs4 def getHTMLText(url): try: kv = {'user-agent':'Mozilla/5.0'} r = requests.get(url, headers = kv) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return '产生异常' def fillUnivList(ulist, html): soup = BeautifulSoup(html, 'html.parser') for tr in soup.find('tbody').children: if isinstance(tr, bs4.element.Tag): tds = tr('td') ulist.append([tds[0].string, tds[1].string, tds[2].string, tds[3].string, tds[4].string]) pass def printUnivList(ulist, num): tplt = '{0:^10}\t{1:{5}^10}\t{2:{5}<6}\t{3:^10}\t{4:^7}' print(tplt.format('排名','学校名称','省份','学校类型','总分',chr(12288))) for i in range(num) : u = ulist[i] if u[4]: print(tplt.format(u[0], u[1], u[2], u[3], u[4], chr(12288))) else: u[4] = 'none' print(tplt.format(u[0], u[1], u[2], u[3], u[4], chr(12288))) def main(): unifo = [] url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming-zongbang-2020.html" html = getHTMLText(url) fillUnivList(unifo, html) printUnivList(unifo, 100) main()输出结果:
排名 学校名称 省份 学校类型 总分 1 清华大学 北京 综合 852.5 2 北京大学 北京 综合 746.7 3 浙江大学 浙江 综合 649.2 4 上海交通大学 上海 综合 625.9 5 南京大学 江苏 综合 566.1 6 复旦大学 上海 综合 556.7 7 中国科学技术大学 安徽 理工 526.4 8 华中科技大学 湖北 综合 497.7 9 武汉大学 湖北 综合 488.0 10 中山大学 广东 综合 457.2 11 西安交通大学 陕西 综合 452.5 12 哈尔滨工业大学 黑龙江 理工 450.2 13 北京航空航天大学 北京 理工 445.1 14 北京师范大学 北京 师范 440.9 15 同济大学 上海 理工 439.0 16 四川大学 四川 综合 435.7 17 东南大学 江苏 综合 432.7 18 中国人民大学 北京 综合 409.7 19 南开大学 天津 综合 402.1 20 北京理工大学 北京 理工 395.6 21 天津大学 天津 理工 390.3 22 山东大学 山东 综合 387.9 23 厦门大学 福建 综合 383.3 23 北京协和医学院 北京 医药 none 24 吉林大学 吉林 综合 379.5 25 华南理工大学 广东 理工 379.4 26 中南大学 湖南 综合 378.6 27 大连理工大学 辽宁 理工 365.1 28 西北工业大学 陕西 理工 359.6 29 华东师范大学 上海 师范 358.0 30 中国农业大学 北京 农业 351.5 30 上海财经大学 上海 财经 none 31 湖南大学 湖南 综合 348.3 32 电子科技大学 四川 理工 334.8 33 北京科技大学 北京 理工 321.8 34 重庆大学 重庆 综合 320.9 35 南京航空航天大学 江苏 理工 319.5 36 南京理工大学 江苏 理工 317.1 36 中央财经大学 北京 财经 none 37 东北大学 辽宁 理工 314.0 38 苏州大学 江苏 综合 306.8 39 华中农业大学 湖北 农业 300.5 40 兰州大学 甘肃 综合 300.4 40 香港中文大学(深圳) 广东 综合 none 41 西安电子科技大学 陕西 理工 299.4 41 对外经济贸易大学 北京 财经 none 42 华东理工大学 上海 理工 294.6 43 北京交通大学 北京 理工 293.6 44 华中师范大学 湖北 师范 292.4 45 上海大学 上海 综合 290.0 46 南方科技大学 广东 综合 289.0 46 首都医科大学 北京 医药 none 47 南京农业大学 江苏 农业 283.2 47 南京医科大学 江苏 医药 none 48 暨南大学 广东 综合 282.6 49 中国海洋大学 山东 综合 281.2 50 南京师范大学 江苏 师范 279.9 51 哈尔滨工程大学 黑龙江 理工 279.4 52 武汉理工大学 湖北 理工 277.6 52 中南财经政法大学 湖北 财经 none 53 西南交通大学 四川 理工 277.3 54 中国地质大学(武汉) 湖北 理工 274.9 55 北京邮电大学 北京 理工 273.7 55 中国政法大学 北京 政法 none 56 东北师范大学 吉林 师范 272.5 57 中国石油大学(北京) 北京 理工 272.4 58 河海大学 江苏 理工 271.8 59 江南大学 江苏 综合 271.5 59 中国医科大学 辽宁 医药 none 60 中国矿业大学 江苏 理工 264.9 61 西北大学 陕西 综合 262.4 61 上海纽约大学 上海 综合 none 62 上海科技大学 上海 综合 261.5 62 天津医科大学 天津 医药 none 63 北京工业大学 北京 理工 260.5 64 北京化工大学 北京 理工 259.7 65 深圳大学 广东 综合 259.1 66 西南大学 重庆 综合 257.5 67 华南师范大学 广东 师范 254.4 67 西南财经大学 四川 财经 none 68 西北农林科技大学 陕西 农业 251.1 68 宁波诺丁汉大学 浙江 综合 none 69 扬州大学 江苏 综合 250.5 70 中国地质大学(北京) 北京 理工 248.8 70 北京外国语大学 北京 语言 none 70 东北财经大学 辽宁 财经 none 71 中国矿业大学(北京) 北京 理工 247.0 72 江苏大学 江苏 综合 245.9 73 东华大学 上海 理工 245.2 74 中国石油大学(华东) 山东 理工 244.8 75 宁波大学 浙江 综合 244.3 75 南方医科大学 广东 医药 none 76 福州大学 福建 理工 243.8 77 北京林业大学 北京 林业 242.3 78 合肥工业大学 安徽 理工 240.5 78 哈尔滨医科大学 黑龙江 医药 none 78 中国传媒大学 北京 语言 none 79 陕西师范大学 陕西 师范 239.9 80 华北电力大学 北京 理工 235.7 81 浙江工业大学 浙江 理工 235.5 >>>