Python爬取大学排名

    技术2023-12-22  74

    爬取数据,用requests库用BeautifulSoup库解析html的页面用Unicode编码的中文空格进行中文的对齐chr(12288)编写表格 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]) pass def printUnivList(ulist, num): tplt = '{0:^10}\t{1:{4}^10}\t{2:{4}<6}\t{3:^10}' print(tplt.format('排名','学校名称','省份','学校类型',chr(12288))) for i in range(num) : u = ulist[i] print(tplt.format(u[0], u[1], u[2], u[3], chr(12288))) def main(): unifo = [] url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming-zongbang-2020.html" html = getHTMLText(url) fillUnivList(unifo, html) printUnivList(unifo, 40) #爬取前40个的内容 main()

    改进版:

    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 >>>
    Processed: 0.014, SQL: 9