注释了一些在学习过程中对这个实例里一些语句作用的理解:
import requests
from bs4 import BeautifulSoup
import bs4
def getHTMLText(url):#用于获取html文本
try:
r = requests.get(url,timeout = 30)
r.raise_for_status()#遇到错误时会返回错误类型
r.encoding = r.apparent_encoding
return r.text
except:
return ""
def fillUnivList(ulist,html):#分析整理提取出的信息
soup = BeautifulSoup(html,'html.parser')
for tr in soup.find('tbody').children:#遍历所有tr标签
if isinstance(tr,bs4.element.Tag):
#如果tr是bs4.element.Tag类,则执行下列代码
tds = tr('td') # 生成tds列表
ulist.append([tds[0].string, tds[1].string, tds[2].string, tds[3].string])
#append会把一个且只能是一个数据以元素的形式添加进列表(append是常用方法)
def printUnivList(ulist,num):#把信息以表的形式格式化输出
tplt = '{0:^6}\t{1:{4}^8}\t{2:{4}^8}\t{3:^4}'
#<表示左对齐,>表示右对齐,^表示居中,\t表示填充4个字符长
print(tplt.format("排名","学校名称","所在省份","总分"," "))
#常用.format()进行格式化输出,此处为输出表头
for i in range(num):#range(num)表示从0到num-1
u = ulist[i]
print(tplt.format(u[0],u[1],u[2],u[3],chr(12288)))#chr(12288)是全角的空格
print("Suc" + str(num))
def main():
uinfo = []
url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html'
html = getHTMLText(url)
fillUnivList(uinfo,html)
printUnivList(uinfo,20)
main()