參考 爬蟲5 爬取中國大學排名情況

2022-04-08 17:53:08 字數 2683 閱讀 1473

最好大學網

2018大學排名

功能描述:

輸出:大學排名資訊的螢幕輸出(排名,大學名稱,總分)

技術路線:requests庫和bs4庫

定向爬蟲:僅對輸入的url進行爬取,不擴充套件爬取

步驟:1、輸入url**,檢視源**,發現資訊都在html檔案中

2、開啟發現:not found,說明沒有對爬取進行robots協議限制,可以進行爬取

3、程式的結構設計:

步驟1,從網路上獲取大學排名網頁內容,gethtmltext()

步驟2、提取網頁內容中資訊到合適的資料結構,fillunivlist()

步驟3、利用資料結構展示並輸出結果,printunivlist()

**:

import

requests

from bs4 import

beautifulsoup

import bs4#

為了使用bs4的標籤函式

#獲取頁面資訊

defgethtmltext(url):

try:

r=requests.get(url,timeout=30)

r.raise_for_status()

return

r.text

except

:

return''#

將資料存到list中

deffillunivlist(ulist,html):

soup=beautifulsoup(html,'

html.parser')

#檢視html原始碼發現每一所大學都在tbody標籤中,這裡乙個tr表示一所大學

for tr in soup.find('

tbody

').children:

if isinstance(tr,bs4.element.tag):#

判斷是否為標籤型別,過濾掉字串

tds=tr('td'

)

#pass

#將num個list中的資料列印顯示出來,視覺化輸出

defprintunivlist(ulist,num):

#列印表頭

print('

\t\t

'.format('

排名','

學校名稱

','總分'))

for i in

range(num):

u=ulist[i]

print('

\t\t

'.format(u[0],u[1],u[2]))

#print('suc'+str(num))

#主函式

defmain():

uinfo=#

待放入資料的列表

url='

'html=gethtmltext(url)

fillunivlist(uinfo,html)

printunivlist(uinfo,20)#

列印20組資料

main()

結果展示:

以上程式有乙個問題,就是總分一欄輸出的竟然是省份,這其實是這一行**的問題:

#這裡應該改為

#更改後就沒有問題了。

在這裡我們的設計思路是:

先搭建程式的框架,先定義三個函式名,然後定義主函式,主函式會依次呼叫三個函式,然後再分別充實三個子函式,一步步的寫,這是寫程式的正確方法。

當遇到bug時,我們可以逐步排查,比如先執行第乙個程式,看看是否已經獲得html檔案,再逐步檢查。

**優化:

format屬性

中文對齊的問題:

:《填充》

《對齊》

《寬度》

,《精度》

《型別》

引號符號

用於填充

的單個字元

《左對齊

>右對齊

^居中對齊

槽的設定

輸出寬度

數字的千位

分隔符適用

於整數和浮點數

浮點數小數部分

的精度或字串

的最大輸出長度

整數型別b,c,d,

o,x,x浮點數型別

e,e,f,%

當中文字元寬度不夠時,採用西文字元填充;中西文本元占用寬度不同。

解決方法:採用中文空格填充chr(12288)

將print**函式做修改

def

printunivlist(ulist,num):

#列印表頭

tplt='

\t^10}\t'#

定義模板

print(tplt.format('

排名','

學校名稱

','總分

',chr(12288)))

for i in

range(num):

u=ulist[i]

print(tplt.format(u[0],u[1],u[2],chr(12288)))

輸出結果如下:發現輸出已經居中

爬取中國大學排名情況(前100)

import requests from bs4 import beautifulsoup alluniv 獲取所要爬取的html文字內容 defgethtmltext url try r requests.get url,timeout 30 r.raise for status return r...

中國大學排名定向爬取

步驟一 從網路上獲取大學排名網頁內容 步驟二 提取網頁內容中資訊到合適的資料結構 步驟三 利用資料結構展示並輸出結果 通過右鍵檢視其網頁源 可得到如下介面 我們在這個介面找到如下資訊,可以發現,這些資訊是在tbody標籤下的,tr下面的td中就是我們想要爬取的資訊。我們僅爬取前四個td值進行返回,第...

中國大學排名的爬取

功能描述 輸入 大學排名的url鏈結 輸出 大學排名資訊的螢幕輸出 排名,大學名稱,總分 技術路線 requests bs4 定向爬蟲 進隊輸入url進行爬取,不擴充套件爬取 程式的結構設計 步驟一 從網路上獲取頁面資訊 gethtmltext 步驟二 提取網頁內容中資訊到合適的資料結構 fillu...