中國大學排名定向爬蟲
阿新 • • 發佈:2018-01-13
展示 中國 判斷 點列 屏幕 .cn axu ise ()
功能描述:
輸入:大學排名URL鏈接
輸出:大學排名信息的屏幕輸出(排名,大學名稱,總分)
技術路線:requests+bs4
定向爬蟲:僅對輸入URL進行爬取,不擴展爬取
程序的結構設計:
步驟1:從網絡上獲取大學排名網頁內容getHTMLText()
步驟2:提取網頁內容中信息到合適的數據結構fillUnivList
步驟3:利用數據結構展示並輸出結果printUnivList()
import requests from bs4 import BeautifulSoup import bs4 def getHTMLText(url): try: r = requests.get(url, timeout = 30) r.raise_for_status() r.encoding= r.apparent_encoding return r.text except: return "" def fillUnivList(uList, html): soup = BeautifulSoup(html, "html.parser") for tr in soup.find(‘tbody‘).children: # 遍歷tbody子節點列表 if isinstance(tr, bs4.element.Tag): # 判斷兩個類型是否相同 tds = tr(‘td‘) # 等價於tds = tr.find_all(‘td‘),返回一個列表uList.append([tds[0].string, tds[1].string, tds[3].string]) def printUnivList(uList, num): tplt = "{0:^10}\t{1:{3}^8}\t{2:10}" # 解決中文字符對齊問題 print(tplt.format("排名", "學校名稱", "總分", chr(12288))) for i in range(num): u = uList[i] print(tplt.format(u[0], u[1], u[2], chr(12288)))def main(): uinfo = [] url = ‘http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html‘ html = getHTMLText(url) fillUnivList(uinfo, html) printUnivList(uinfo, 10) main()
輸出:
中國大學排名定向爬蟲