1. 程式人生 > >使用Python爬取中國大學排名,並格式化對其輸出內容

使用Python爬取中國大學排名,並格式化對其輸出內容

首先,我們需要注意幾點
1.可以使用isinstance語句配合bs4庫中的bs4.element.Tag判斷獲取到的物件是不是標籤物件.
2.輸出內容並且要求他用空白補齊時,系統預設用的是英文空白符,英文空白符和中文空白符(chr(12288)獲取)寬度不一樣。

#程式碼使用python3.x編寫
import requests
from bs4 import BeautifulSoup
import bs4 #匯入bs4庫是為了獲取節點的物件型別是不是節點型別

def getHTMLText(url):
    r = requests.get(url,timeout=30)
    if
(r.status_code != 200): return "" else: r.encoding = r.apparent_encoding return r.text def fillUnivList(ulist,text): soup = BeautifulSoup(text, "html.parser") for tr in soup.find("tbody").children: # 判斷是不是節點型別 if isinstance(tr,bs4.element.Tag): tds = tr('td'
)#等同於tr.find_all('td') ulist.append([tds[0].next.string,tds[1].string,tds[3].string]) #獲取子節點標籤裡面的內容,並放到ulist裡面 def printUnivList(ulist,num): print(len(ulist)) templte = "{0:{3}^10}\t{1:{3}^10}\t{2:{3}^10}" #0,1,2,3表示的是第幾個引數:是必須寫的,^表示居中對齊,5和10表示字元數量,{3}表示用第3個引數來填充,\t是橫向製表符 print(templte.format("序號"
,"大學名稱","分數",chr(12288))) #12288表示中文空格符號 for i in range(num): #num控制顯示數量 print(templte.format(ulist[i][0],ulist[i][1],ulist[i][2],chr(12288))) def main(): url = "http://www.zuihaodaxue.cn/zuihaodaxuepaiming2017.html" htmlText = getHTMLText(url) uinfo = [] fillUnivList(uinfo,htmlText) printUnivList(uinfo,20) main()