功能描述
輸入:大學排名的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...