爬取中國大學排名
阿新 • • 發佈:2019-01-22
看到結果真是傷心~~~~~。
import requests from bs4 import BeautifulSoup import bs4 def get_html(url): #獲取網頁內容 try: page=requests.get(url,timeout=30) page.status_code page.encoding=page.apparent_encoding #讓編碼統一 return page.text #返回文字形式 except: return 'error' def get_list(Ulist,html): soup=BeautifulSoup(html,'html.parser') #解析網頁 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[2].string,tds[4].string]) #將td標籤裡的所有內容加到Ulist列表裡 def print_list(Ulist,num): print("{0:^10}\t{1:{3}^10}\t{2:{5}^10}\t{4:^10}".format('排名','名稱','地點',chr(12288),'學生質量',chr(12288))) #.format函式格式輸出 for university in range(num): chr(12288)是中文空格的編碼,這裡使用中英文混排,使得排列整齊 r=Ulist[university] #print("{0:^10}\t{1:{3}^10}\t{2:^10}".format(r[0],r[1],r[2],chr(12288))) def Compaus_rank_search(Ulist,name): print("{0:^10}\t{1:{3}^10}\t{2:{5}^10}\t{4:^10}".format('排名', '名稱', '地點', chr(12288), '學生質量', chr(12288))) # .format函式格式輸出 for university in range(600): r = Ulist[university] if r[1] == name: print("{0:^10}\t{1:{3}^10}\t{2:{5}^10}\t{4:^10}".format(r[0], r[1], r[2], chr(12288), r[3], chr(12288))) def input_compaus_name(Ulist): while True: name=input("請輸入學校名稱:") Compaus_rank_search(Ulist,name) Uli=[] url='http://www.zuihaodaxue.cn/zuihaodaxuepaiming2018.html' html=get_html(url) get_list(Uli,html) input_compaus_name(Uli) #print_list(Uli,600) 很慘,好好學技術,我不想被溫水煮了。