中國大學排名的爬取

2021-10-02 17:24:32 字數 3179 閱讀 9088

功能描述

輸入:大學排名的url鏈結

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

技術路線:requests-bs4

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

程式的結構設計

步驟一:從網路上獲取頁面資訊

gethtmltext()

步驟二:提取網頁內容中資訊到合適的資料結構

fillunivlist()

步驟三:利用資料結構展示並輸出結果

printunivlist()

import requests

from bs4 import beautifulsoup

import bs4

#從網路上獲取頁面資訊

defgethtmltext

(url)

:try

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

r.raise_for_status(

) return r.text

except

:return

""#提取網頁內容中資訊到合適的資料結構

deffillunivlist

(ulist,html)

: soup=beautifulsoup(html,

"html.parser"

)for tr in soup.find(

'tbody'

).children:

#過濾掉非標籤的其他資訊,用isinstance()對型別進行判斷

ifisinstance

(tr,bs4.element.tag)

: tds=tr(

'td'

)[tds[0]

.string,tds[1]

.string,tds[2]

.string]

)#利用資料結構展示並輸出結果

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])

)def

main()

: unifo=

url=

""html=gethtmltext(url)

fillunivlist(unifo,html)

printunivlist(unifo,20)

#列印20所學校的資訊

format方法的問題

中文字元不夠時,預設英文本元填充,會造成對齊問題。

#從網路上獲取頁面資訊

defgethtmltext

(url)

:try

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

r.raise_for_status(

) return r.text

except

:return

""#提取網頁內容中資訊到合適的資料結構

deffillunivlist

(ulist,html)

: soup=beautifulsoup(html,

"html.parser"

)for tr in soup.find(

'tbody'

).children:

#過濾掉非標籤的其他資訊,用isinstance()對型別進行判斷

ifisinstance

(tr,bs4.element.tag)

: tds=tr(

'td'

)[tds[0]

.string,tds[1]

.string,tds[2]

.string]

)#利用資料結構展示並輸出結果

defprintunivlist

(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))

)def

main()

: unifo=

url=

""html=gethtmltext(url)

fillunivlist(unifo,html)

printunivlist(unifo,20)

#列印20所學校的資訊

main(

)

中國大學排名定向爬取

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

爬取中國大學排名(前567)

import requests from bs4 import beautifulsoup import re alluniv def gethtmltext url try r requests.get url,timeout 30 r.raise for status r.encoding ut...

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

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