2020-04-14 中國大學(xué)排名定向爬蟲

功能描述

  • 輸入:大學(xué)排名URL鏈接
  • 輸出:大學(xué)排名信息的屏幕輸出(排名贯卦,大學(xué)名稱,總分)
  • 技術(shù)路線:requests-bs4
  • 定向爬蟲:僅對輸入URL進(jìn)行爬取撵割,不擴(kuò)展爬取。
    經(jīng)查看網(wǎng)頁源代碼發(fā)現(xiàn)羹与,要爬取的內(nèi)容均寫在html網(wǎng)頁中,所以這個定向爬蟲是可以實(shí)現(xiàn)的纵搁。
    而且查看爬取網(wǎng)頁的robots協(xié)議,發(fā)現(xiàn)無此頁面徘层,說明爬取大學(xué)排名這個功能是完全可以合法實(shí)現(xiàn)的利职。


    QQ圖片20200414165828.png
  • 實(shí)現(xiàn)目標(biāo):
    能夠打印出如下所示的表格:


    image.png

程序的結(jié)構(gòu)設(shè)計

  • 步驟一:從網(wǎng)絡(luò)上獲取大學(xué)排名的網(wǎng)頁內(nèi)容
    getHTMLText()
  • 步驟二:提取網(wǎng)頁內(nèi)容中信息放到合適的數(shù)據(jù)結(jié)構(gòu)中,這樣可以將信息編程代碼的一部分(關(guān)鍵u尉础热押!
    getUnivList()
  • 步驟三:利用數(shù)據(jù)結(jié)構(gòu)展示并輸出結(jié)果
    printUnivList()

經(jīng)分析,爬取到的內(nèi)容是個二維數(shù)據(jù)結(jié)構(gòu)桶癣,所以可以采取列表的方式(二維列表:即列表中的每個元素又是一個列表)

  • 代碼實(shí)現(xiàn):
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 ""

#提取html中關(guān)鍵數(shù)據(jù),添加到一個列表中
def fillUnivList(ulist, html):
    soup = BeautifulSoup(html, "html.parser")
    #尋找tbody標(biāo)簽并對其孩子節(jié)點(diǎn)進(jìn)行遍歷肿仑,這里的tr是一所大學(xué)對應(yīng)的信息
    #需要過濾掉非標(biāo)簽類型的其他信息
    for tr in soup.find('tbody').children:
        if isinstance(tr, bs4.element.Tag):
            tds = tr('td')
            ulist.append([tds[0].string, tds[1].string, tds[2].string])

#需要進(jìn)行格式化輸出
def printUnivList(ulist, num):
    #打印表頭
    tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}"
    print(tplt.format("排名","學(xué)校名稱","總分", 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, 20) # 只輸出前20名
main()
  • 輸出結(jié)果:
    排名         學(xué)校名稱         總分    
    1          清華大學(xué)        北京市    
    2          北京大學(xué)        北京市    
    3          浙江大學(xué)        浙江省    
    4         上海交通大學(xué)       上海市    
    5          復(fù)旦大學(xué)        上海市    
    6          南京大學(xué)        江蘇省    
    7        中國科學(xué)技術(shù)大學(xué)      安徽省    
    8        哈爾濱工業(yè)大學(xué)       黑龍江省   
    9         華中科技大學(xué)       湖北省    
    10         中山大學(xué)        廣東省    
    11         東南大學(xué)        江蘇省    
    12         天津大學(xué)        天津市    
    13         同濟(jì)大學(xué)        上海市    
    14       北京航空航天大學(xué)      北京市    
    15         四川大學(xué)        四川省    
    16         武漢大學(xué)        湖北省    
    17        西安交通大學(xué)       陜西省    
    18         南開大學(xué)        天津市    
    19        大連理工大學(xué)       遼寧省    
    20         山東大學(xué)        山東省 
  • 知識點(diǎn):

此方法在中文輸出排版方面很有效尤慰。

python中format函數(shù)用法
chr()函數(shù)用法

format方法中兩個重要屬性:
①填充:用于填充的單個字符
②寬度:槽的設(shè)定輸出寬度

當(dāng)中文字符寬度不夠時雷蹂,采用西文字符填充;中西文字符占用寬度不同

中文對齊問題是一個通用問題匪煌,在任何需要中英文混合輸出的情況下,他都是個問題

解決方案:
字符寬度不夠時用中文字符填充而不是西文字符填充霜医,那么對齊的問題就解決了
UTF-8編碼對應(yīng)的中文空格信息叫做12288
我們可以用chr(12288)來引入到函數(shù)中

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末驳规,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子医男,更是在濱河造成了極大的恐慌砸狞,老刑警劉巖镀梭,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刀森,死亡現(xiàn)場離奇詭異,居然都是意外死亡报账,警方通過查閱死者的電腦和手機(jī)研底,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笙什,“玉大人飘哨,你說我怎么就攤上這事胚想∷銎荆” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵浊服,是天一觀的道長统屈。 經(jīng)常有香客問我牙躺,道長愁憔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任孽拷,我火速辦了婚禮吨掌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脓恕。我一直安慰自己膜宋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布炼幔。 她就那樣靜靜地躺著秋茫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪乃秀。 梳的紋絲不亂的頭發(fā)上肛著,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天,我揣著相機(jī)與錄音跺讯,去河邊找鬼枢贿。 笑死,一個胖子當(dāng)著我的面吹牛刀脏,可吹牛的內(nèi)容都是我干的局荚。 我是一名探鬼主播,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼火本,長吁一口氣:“原來是場噩夢啊……” “哼危队!你這毒婦竟也來了聪建?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤茫陆,失蹤者是張志新(化名)和其女友劉穎金麸,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體簿盅,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挥下,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了桨醋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棚瘟。...
    茶點(diǎn)故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖喜最,靈堂內(nèi)的尸體忽然破棺而出偎蘸,到底是詐尸還是另有隱情,我是刑警寧澤瞬内,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布迷雪,位于F島的核電站,受9級特大地震影響虫蝶,放射性物質(zhì)發(fā)生泄漏章咧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一能真、第九天 我趴在偏房一處隱蔽的房頂上張望赁严。 院中可真熱鬧,春花似錦粉铐、人聲如沸疼约。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽忆谓。三九已至,卻和暖如春踱承,著一層夾襖步出監(jiān)牢的瞬間倡缠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工茎活, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昙沦,地道東北人。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓载荔,卻偏偏與公主長得像盾饮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容