# 功能描述
# 輸出:大學排名資訊的螢幕輸出(排名,大學名稱,總分)
# 開啟 發現不存在 可以爬
# 程式的結構設計
# 步驟1:從網路上獲取大學排名網頁內容→gethtmltext()
# 步驟2:提取網頁內容中資訊到合適的資料結構→fillunivlist()
# 步驟3:利用資料結構展示並輸出結果→printunivlist()
# 中文對齊問題的解決 採用中文字元的空格填充chr(12288)
import requests
import bs4
from bs4 import beautifulsoup
defgethtmltext
(url)
:try
: r=requests.get(url,timeout=30)
r.raise_for_status(
) return r.text
except
:return
""def
fillunivlist
(ulist,html)
: soup=beautifulsoup(html,
"html.parser"
)for tr in soup.find(
'tbody'
).children:
ifisinstance
(tr,bs4.element.tag)
:# 如果tr標籤不是bs4.element.tag型別 則過濾
tds=tr(
'td'
)# 這裡省略了findall,實際上應該是tds=tr.findall('td') 在tr中查詢td
[tds[0]
.string,tds[1]
.string,tds[3]
.string]
)def
printunivlist
(ulist,num)
: tblt=
"\t^10}\t"
# 表示 列印學校名稱時 需要填充時 使用format函式中第四個變數填充 也就是chr(12288)中文空格
print
(tblt.
format
("排名"
,"學校名稱"
,"總分"
,chr
(12288))
)# ^表示居中 <>分別表示左右對齊 6表示槽長度 \t表示橫向製表符
for i in
range
(num)
: u=ulist[i]
print
(tblt.
format
(u[0
],u[1]
,u[2],
chr(
12288))
)print
("successful!"
+str
(num)
)def
main()
: uinfo=
url=
""html=gethtmltext(url)
fillunivlist(uinfo,html)
printunivlist(uinfo,20)
main(
)
結果:
排名 學校名稱 總分
1 清華大學 95.9
2 北京大學 82.6
3 浙江大學 80
4 上海交通大學 78.7
5 復旦大學 70.9
6 南京大學 66.1
7 中國科學技術大學 65.5
8 哈爾濱工業大學 63.5
9 華中科技大學 62.9
10 中山大學 62.1
11 東南大學 61.4
12 天津大學 60.8
13 同濟大學 59.8
14 北京航空航天大學 59.6
15 四川大學 59.4
16 武漢大學 59.1
17 西安交通大學 58.9
18 南開大學 58.3
19 大連理工大學 56.9
20 山東大學 56.3
successful!20
中國大學排名定向爬取
步驟一 從網路上獲取大學排名網頁內容 步驟二 提取網頁內容中資訊到合適的資料結構 步驟三 利用資料結構展示並輸出結果 通過右鍵檢視其網頁源 可得到如下介面 我們在這個介面找到如下資訊,可以發現,這些資訊是在tbody標籤下的,tr下面的td中就是我們想要爬取的資訊。我們僅爬取前四個td值進行返回,第...
中國大學排名的爬取
功能描述 輸入 大學排名的url鏈結 輸出 大學排名資訊的螢幕輸出 排名,大學名稱,總分 技術路線 requests bs4 定向爬蟲 進隊輸入url進行爬取,不擴充套件爬取 程式的結構設計 步驟一 從網路上獲取頁面資訊 gethtmltext 步驟二 提取網頁內容中資訊到合適的資料結構 fillu...
爬取中國大學排名(前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...