from bs4 import BeautifulSoupimport requestsimport bs4 #bs4.element.Tag时用的上#获取网页页面HTMLdef getHTMLText(url): try: r = requests.request("get", url,timeout=30) r.raise_for_status() #如不是200报错 r.encoding = r.apparent_encoding #猜测编码然后赋予给解码 编码模式 demo = r.text soup = BeautifulSoup(demo, "html.parser") #做汤 return soup except: return ""#分析并返回列表def fillUnivList(ulist,html): soup = html for tr in soup.find("tbody").children: #从汤里找tbody标签的儿子遍历 if isinstance(tr,bs4.element.Tag): #如果标签是标签名字 tds = tr("td") #寻找tr里所有td列表,然后赋予tds ulist.append([tds[0].string,tds[1].string,tds[3].string]) #加入013号 pass #???#打印表格def printUnivList(ulist,num): tplt = "{0:^10}\t{1:{3}^8}\t{2:^10}" #模板 print(tplt.format("排名","学校名称","总分",chr(12288))) #3号中文空格 for i in range(num): u = ulist[i] #列表中的0是一个拥有三个元素的列表 print(tplt.format(u[0], u[1], u[2],chr(12288))) #拥有三个元素的列表按模板打印 print("Suc" + str(num))#主函数def main(): uinfo = [] #创建一个列表 url = "http://www.zuihaodaxue.com/zuihaodaxuepaiming2016.html" html = getHTMLText(url) fillUnivList(uinfo,html) printUnivList(uinfo,20) #打印20个大学 main()
原文地址:https://www.cnblogs.com/naraka/p/8998107.html
时间: 2024-10-04 19:51:48