import requestsfrom bs4 import BeautifulSoupimport bs4def getHTMLText(url): try: r=requests.get(url,timeout=30) # 返回一个实例,包含了很多的信息 r.raise_for_status() # 响应状态码,200表示服务器已成功处理了请求 r.encoding = r.apparent_encoding# 更改请求网页的编码方式为utf-8 return r.text # 返回所请求网页的内容 except: return "产生异常"def fillUnivList(ulist,html): soup = BeautifulSoup(html, "html.parser") #使用BeatifulSoup解析网页正文文本内容 for tr in soup.find('tbody'): # 遍历tbody结构下的tr节点 if isinstance(tr,bs4.element.Tag):#判断遍历的tr节点是否是标签 tds=tr('td') #读取tr节点下的td标签的内容存入一个列表tds for i in range(5): try: a = str(tds[i].string) #读取trs[i]中的字符串内容给a a = a.strip() #删除字符串a前后的空格 tds[i] = a #将a的内容赋给trs[i] except: tds[i] = "" #异常处理,如果tds[i]存的不是字符串 return "产生异常" ulist.appent(tds[0].string,tds[1].string,tds[2].string) #将列表trs中的内容以字符串的形式追加到ulist列表中def printUnvList(ulist,num): print("{:^10}\t{:^6}\t{:^10}".format('排名', '学院名称','国家')) for i in range(num+1): u=ulist[i] #读取ulist[i]中的字符串内容给u if i>0: print("{:^10}\t{:^6}\t{:^10}".format(u[0], u[1], u[2]))#打印列表u的内容 print("Suc"+str(num)) def main(): unifo = [] unifo1 = [] url='https://baike.so.com/doc/5466535-5704751.html' html=getHTMLText(url) #获取url的内容 fillUnivList(unifo,html) #利用BeautifulSoup库解析html,获得相关数据存入列表unifo中 printUnvList(unifo,30) #打印30行列表unifo中的内容main()
添加回答
举报
0/150
提交
取消