zluxingzhe 2020-01-17
import requests,bs4 from bs4 import BeautifulSoup def getHTMLText(url): try: r=requests.get(url) r.raise_for_status() r.encoding=r.apparent_encoding return r.text except: print("request failed") def getObjectData(soup): li=[] for tr in soup.find(‘tbody‘).children: if isinstance(tr,bs4.element.Tag): tds=tr(‘td‘) li.append([tds[0].string,tds[1].string,tds[3].string]) return li def printUnivList(result,num): print("sequence"+"\t"+"UnivName"+"\t"+"Score") for i in range(num): print(result[i][0]+‘\t‘+result[i][1]+‘\t‘+result[i][2]) url="http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html" demo = getHTMLText(url) soup = BeautifulSoup(demo,"html.parser") result = getObjectData(soup) printUnivList(result,10)
上面的代码成功地实现了从"中国最好大学2019网站(http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html)上抓取大学排名,大学名称,总成绩等内容,并进行显示.运行结果如下:
sequence UnivName Score
1 清华大学 94.6
2 北京大学 76.5
3 浙江大学 72.9
4 上海交通大学 72.1
5 复旦大学 65.6
6 中国科学技术大学 60.9
7 华中科技大学 58.9
7 南京大学 58.9
9 中山大学 58.2
10 哈尔滨工业大学 56.7