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