爬取网址:http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html
程序的结构设计:
步骤1:从网络上获取大学排名网页内容 getHTMLText()
def getHTMLText(url):
try:
r=requests.get(url,timeout=30)
r.raise_for_status()
r.encoding=r.apparent_encoding
return r.text
except:
return ""
步骤2:提取网页内容中信息到合适的数据结构 fillUnivList()
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[3].string])
步骤3:利用数据结构展示并输出结果 printUnivList()
def printUnivList(ulist,num):
#格式化输出
tplt="{0:^10}\t{1:{3}^10}\t{2:^10}"
print(tplt.format("排名", "学校名称", "总分", chr(12288)))
for i in range(num):
u=ulist[i]
print(tplt.format(u[0], u[1], u[2], chr(12288)))
主函数及实现
def main():
uinfo=[]
url='http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html'
html=getHTMLText(url)
fillUnivList(uinfo,html)
printUnivList(uinfo,10) #20 univs
main()
爬取结果:
结果有省略