跟小白学python网络爬虫实例1
实例1--2017中国最好大学排名定向爬虫
原始mooc上的代码仍有瑕疵,我在spyder环境下进行了优化和调试
直接上代码:
1 # 2017中国最好大学排名定向爬虫 2 """ 3 Created on Mon Oct 9 19:52:19 2017 4 5 @author: DONG LONG RUI 6 """ 7 import requests 8 import bs4 9 from bs4 import BeautifulSoup 10 11 def getHTMLText(url): 12 try: 13 r=requests.get(url,timeout=30) 14 r.raise_for_status() 15 r.encoding=r.apparent_encoding 16 return r.text 17 except: 18 return '' 19 20 def fillUnivList(ulist,html): 21 soup=BeautifulSoup(html,'html.parser') 22 for tr in soup.find('tbody').children: 23 if isinstance(tr,bs4.element.Tag): 24 tds=tr('td') 25 # print(tds[0].contents[0]) 26 # print('\t') 27 # print(tds[1]) 28 # print('\t') 29 # print(tds[3]) 30 ulist.append([tds[0].contents[0],tds[1].string,tds[3].string]) 31 32 33 34 def printUnivList(ulist,num): 35 tplt='{0:^10}\t{1:^12}\t{2:^12}' 36 print(tplt.format('排名','学校名称','总分'))#表头的后两个元素的槽的宽度进行调整才对齐 37 for i in range(num): 38 u=ulist[i] 39 print('{0:^10}\t{1:{3}^10}\t{2:^10}'.format(u[0],u[1],u[2],chr(12288))) 40 41 def main(): 42 uinfo=[] 43 url='http://www.zuihaodaxue.cn/zuihaodaxuepaiming2017.html' 44 html=getHTMLText(url) 45 fillUnivList(uinfo,html) 46 #print(uinfo) 47 printUnivList(uinfo,80)#打印80个大学 48 49 main()
运行输出结果:
排名 学校名称 总分
1 清华大学 94.0
2 北京大学 81.2
3 浙江大学 77.8
4 上海交通大学 77.5
5 复旦大学 71.1
6 中国科学技术大学 65.9
7 南京大学 65.3
8 华中科技大学 63.0
9 中山大学 62.7
10 哈尔滨工业大学 61.6
11 同济大学 60.8
12 东南大学 59.8
13 武汉大学 58.4
14 北京航空航天大学 58.3
15 南开大学 58.2
16 四川大学 57.4
16 西安交通大学 57.4
18 天津大学 56.2
19 华南理工大学 56.1
20 北京师范大学 55.1
21 厦门大学 55.0
22 山东大学 54.5
23 大连理工大学 54.1
24 吉林大学 53.9
25 北京理工大学 53.1
26 中南大学 52.4
27 对外经济贸易大学 51.9
28 苏州大学 51.7
28 中国人民大学 51.7
30 西北工业大学 51.1
31 湖南大学 50.7
32 华东理工大学 50.0
32 华东师范大学 50.0
34 电子科技大学 49.4
35 重庆大学 49.3
36 南京航空航天大学 49.1
37 北京科技大学 48.9
38 上海财经大学 48.8
39 南京理工大学 48.0
39 中国农业大学 48.0
41 北京交通大学 47.4
42 北京化工大学 47.1
42 首都医科大学 47.1
44 福州大学 46.7
44 武汉理工大学 46.7
44 中央财经大学 46.7
47 北京邮电大学 46.6
47 东华大学 46.6
47 华中师范大学 46.6
50 上海大学 46.5
51 西安电子科技大学 46.2
52 北京协和医学院 45.9
53 天津医科大学 45.7
54 华北电力大学 45.5
55 东北大学 45.3
55 东北师范大学 45.3
57 暨南大学 45.2
58 兰州大学 45.0
59 江南大学 44.8
59 南京医科大学 44.8
61 中国海洋大学 44.7
62 上海外国语大学 44.5
63 中国地质大学(北京) 44.3
64 西南财经大学 44.1
65 中国地质大学(武汉) 44.0
66 华中农业大学 43.9
66 南方医科大学 43.9
68 合肥工业大学 43.6
69 中国医科大学 43.5
70 西南大学 43.4
71 南京农业大学 43.3
71 中国药科大学 43.3
71 中南财经政法大学 43.3
74 哈尔滨工程大学 43.2
74 中国石油大学(北京) 43.2
76 浙江工业大学 43.0
77 东北财经大学 42.9
77 河海大学 42.9
77 中国矿业大学 42.9
80 北京工业大学 42.8