Python網絡爬蟲與信息提取-中國大學排名(2021年)


慕課 Python網絡爬蟲與信息提取課程---嵩天 、黃天羽。 第二周,單元六,實例一--爬取最好大學網中國大學排名
由於老師在視頻中爬取的是2016年的網頁,現在網頁源碼已經發生了變化,在老師代碼的基礎上,現給出最新的爬取代碼

一、網頁分析

爬取鏈接:最好大學網https://www.shanghairanking.cn/rankings/bcur/202111

原課程網頁源碼
原課程網頁源碼
現網頁源碼,學校名稱在a標簽里
現網頁源碼

二、代碼部分

import requests
from bs4 import BeautifulSoup
import bs4


def getGTMLText(url):
    """
    爬取目標網頁的文本信息
    :param url:目標網頁鏈接
    :return:目標網頁的文本信息
    """
    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):
    """
    通過BeautifulSoup庫解析文本信息,並將所需信息存入ulist列表中
    :param ulist:大學信息列表, 排名 學校名稱 得分
    :param html:爬取的文本信息
    :return:
    """
    soup = BeautifulSoup(html, "html.parser")
    for tr in soup.find('tbody').children:        # 遍歷tbody的所有子孫節點
        if isinstance(tr, bs4.element.Tag):       # 判斷tr標簽的類型,如何不是bs4庫定義的tag類型,過濾掉
            tds = tr('td')       # 等價於 tr.find_all('td') 將tbody中所有的td標簽添加到列表tds
            univ = [tds[0].string.strip(),                 # 提取對應標簽中非屬性字符串
                    tds[1].find('a').string.strip(),       # 大學名稱存在td標簽的子標簽a中,
                    tds[4].string.strip()]
            ulist.append(univ)


def printUnivList(ulist, num):
    """
    打印大學排名信息
    :param ulist: 大學信息列表, 排名 學校名稱 得分
    :param num: 爬取學校的數量
    :return:
    """
    # 打印格式  ^表示居中
    tlpt = "{0:^10}\t{1:{3}^10}\t{2:^10}"
    print(tlpt.format("排名", "學校", "得分", chr(12288)))
    for i in range(num):
        u = ulist[i]
        print(tlpt.format(u[0], u[1], u[2], chr(12288)))


def main():
    uinfo = []         # uinfo == ulist  大學排名信息
    url = 'https://www.shanghairanking.cn/rankings/bcur/202111'
    html = getGTMLText(url)
    fillUnivList(uinfo, html)
    printUnivList(uinfo, 30)     # univ 30


if __name__ == '__main__':
    main()


三、輸出結果

    排名    	    學校    	    得分    
    1     	   清華大學   	  969.2   
    2     	   北京大學   	  855.3   
    3     	   浙江大學   	  768.7   
    4     	  上海交通大學  	  723.4   
    5     	   南京大學   	  654.8   
    6     	   復旦大學   	  649.7   
    7     	 中國科學技術大學 	  577.0   
    8     	  華中科技大學  	  574.3   
    9     	   武漢大學   	  567.9   
    10    	  西安交通大學  	  537.9   
    11    	 哈爾濱工業大學  	  522.6   
    12    	   中山大學   	  519.3   
    13    	  北京師范大學  	  518.3   
    14    	   四川大學   	  516.6   
    15    	 北京航空航天大學 	  513.8   
    16    	   同濟大學   	  508.3   
    17    	   東南大學   	  488.1   
    18    	  中國人民大學  	  487.8   
    19    	  北京理工大學  	  474.0   
    20    	   南開大學   	  465.3   
    21    	   山東大學   	  447.0   
    22    	   天津大學   	  444.3   
    23    	   中南大學   	  442.2   
    24    	   吉林大學   	  435.7   
    25    	  西北工業大學  	  430.5   
    26    	   廈門大學   	  427.8   
    27    	  華南理工大學  	  419.8   
    28    	  大連理工大學  	  418.2   
    29    	  華東師范大學  	  401.8   
    30    	  中國農業大學  	  400.4   

進程已結束,退出代碼為 0


已轉載至csdn


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM