所有笔记内容均来源于 爱课程 的北京理工大学嵩天教授课程,版权归属于嵩天老师所有。
import requests # 导入网页爬取库
from bs4 import BeautifulSoup #导入html解析库
import bs4
def getHTMLText(url): # 定义函数
try:
r = requests.get(url, timeout=30) #网页访问请求,超时30
r.raise_for_status()#查询访问状态是否异常,异常直接进入except部分进行处理
r.encoding = r.apparent_encoding #把编码改为可以使用户读懂的编码
return r.text #返回获取的内容
except:
return ""
def fillUnivList(ulist, html): #对网页内容进行解析
soup = BeautifulSoup(html, "html.parser") #获取html的标签
for tr in soup.find('tbody').children:
if isinstance(tr, bs4.element.Tag): #判断tr数据是否是Tag标签类型
tds = tr('td')
ulist.append([tds[0].string, tds[1].string, tds[2].string, tds[3].string])
def printUnivList(ulist, num): # 对输出数据进行格式控制打印
tplt = "{0:^10}\t{1:{4}^10}\t{2:{4}^10}\t{3:^10}" # 0,1,2,3,4对应格式控制符后面的变量顺序,10对应输出字符宽度。{1:{4}^10},{4}代表中文空格,表示学校名称中对齐填充的宽度以中文空格对齐
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():
uinfo = []
url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html'
html = getHTMLText(url)
fillUnivList(uinfo, html)
printUnivList(uinfo, 20) # 20 univs
main()