中國大學排名(定向爬蟲)實例


中國大學排名(定向爬蟲)實例

獲取中國大學排名的爬蟲實例,采用了requestsBeautifulSoup4函數庫

中國大學排名網址:http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html

功能描述:

輸入:大學排名URL連接

輸出:大學排名信息的屏幕輸出(排名,大學名稱,總分)

技術路線:requests和bs4

定向爬蟲:僅對輸入URL進行爬取,不擴展爬取

 

robots協議:

定向爬蟲網址是否提供robots協議的約定,由於我們只訪問了這個網站的一個鏈接,可以手動查看。

輸入:http://www.zuihaodaxue.cn/robots.txt

發現網頁不存在(如下圖)

說明這個網站並沒有通過robots協議對爬蟲進行相應的限制,因此我們對大學排名的爬取是可以實現的。

 

程序結構設計:

步驟1:從網絡上獲取大學排名網頁內容:def getHTMLText(url)

步驟2:提取網頁內容中信息到合適的數據結構:def fillUnivList(ulist, html)

步驟3:利用數據結構展示並輸出結果:def printUnivList(ulist, num)

 

完整代碼:

 1 #CrawUnivRankingB.py
 2 import requests  3 from bs4 import BeautifulSoup  4 import bs4  5 
 6 # 將網頁中的信息爬去出來並返回,,從網絡中獲取大學排名網頁內容
 7 def getHTMLText(url):  8     try:  9         r = requests.get(url, timeout=30) 10         r.raise_for_status()#異常信息
11         r.encoding = r.apparent_encoding 12         return r.text 13     except: 14         return ""
15 
16 # 提取html內容中信息到合適的數據結構中
17 def fillUnivList(ulist, html): 18     soup = BeautifulSoup(html, "html.parser") 19     for tr in soup.find('tbody').children: 20         # 檢測tr標簽的類型,如果tr標簽的類型不是bs4類型
21         if isinstance(tr, bs4.element.Tag): 22             tds = tr('td') 23             ulist.append([tds[0].string, tds[1].string, tds[3].string]) 24 
25 # 利用數據結構展示並輸出結果
26 def printUnivList(ulist, num): 27     tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}"
28     print(tplt.format("排名","學校名稱","總分",chr(12288))) 29     for i in range(num): 30         u=ulist[i] 31         print(tplt.format(u[0],u[1],u[2],chr(12288))) 32     
33 def main(): 34     uinfo = [] 35     url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html'
36     html = getHTMLText(url) 37  fillUnivList(uinfo, html) 38     printUnivList(uinfo, 20) #20個學校信息
39 main()


免責聲明!

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



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