1. 程式人生 > >中國大學排名定向爬蟲

中國大學排名定向爬蟲

展示 中國 判斷 點列 屏幕 .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()

輸出:

技術分享圖片

中國大學排名定向爬蟲