下面我们将三个定义的函数内容填进去,使得程序可以正确运行
首先来看一下 getHtmlText() 它主要是将url信息从网络上爬取下来,并且将其中的html页面返回给其他函数
def getHTMLText(url):
try:
r=requests.get(url,timeout=30)
r.raise_for_status()
r.encoding=r.apparent_encoding()
return r.text
except:
return ""
以上
接下来看一下fillUnivList()函数 是根据html内容提取最关键的信息,我们观察一下该网页的源代码就会发现所有大学的信息都在标签tbody里面 在tr标签中包含了当前大学的所有数据信息,而且每个tr标签中的信息又被td标签包围,首先我们需要在html页面中获取tbody 标签获取所有大学的信息,然后再tbody标签中解析tr标签获取每一个大学的信息,再把tr标签中的td标签找到,把每一个大学的相关的数据参数找到写到对应的ulist列表中,我们可以用我们前次课学到的遍历以及查找方法进行获得
def fillUnivList(ulist,html):
soup=BeautifulSoup(html,"html.parser")
for tr in soup.find('tbody').children: #我们利用find函数查找tbody标签,并且把它的孩子做一个遍历,这里每一个tr 就是一所大学对应的信息,可是tbody标签中的儿子标签中的有可能是字符串类型的 然后我们需要的大学信息是tr标签里面,是标签类型的,我们需要过滤掉非标签类型的字符串类型,用到isinstance来对类型做一个判断
def fillUnivList(ulist,html):
soup=BeautifulSoup(html,"html.parser")
for tr in soup.find('tbody').children: #首先解析html代码中的tbody标签,然后在tbody标签中找到每一所大学对应的tr标签,并且在tr标签中找到所对应的td标签,把我们需要 的td标签的三个值加入到列表中
if tr isinstance(tr,bs4.element.Tag): #(如果不是bs4库定义的tag类型就会被过滤掉)
tds=tr('td') #把tr标签里的所有td标签存成tds
ulist.append([tds[0].string,tds[1]string,tds[2].string])
def printUnivList(ulist,num):
print("{:^10}\t{:^6}\t{:^10}'.format('排名',’大学名称‘,'总分'))
for in range num:
u=ulist[i] #用print函数实现了对表头的打印 接下来打印大学的其他信息,我们知道大学信息保存在ulist中,我们想输出的学校数量用num来表示
print("{:^10}\t{:^6}\t{:^10}'.format(u[0],u[1],u[2]))
print('Suc'+str(num))
**********************今天先到这吧,累死了 我要回去睡觉******************************