功能實現
2.輸出:大學排行資訊
所用到的庫:beaitifulsoup,requests
程式結構設計
步驟一:利用requests獲取網頁內容
步驟二:利用bs4提取網頁內容資訊到合適的資料結構
步驟三:在螢幕上列印出來
建立三個函式,將其分為三個模組。這樣能夠使**更加清晰易讀,維護方便。
函式一:gethtmltext()- 獲取網頁內容
函式二:fillunivlist()-獲取網頁大學資訊到合適的資料結構
函式三:printunivlist()-利用資料結構列印到螢幕上
下面是模板:
import接下裡就可以按照模板寫入相應的**requests
from bs4 import
beautifulsoup
def gethtmltext(url): #
獲取網頁內容
return
""def fillunivlist(ulist,html): #
提取資訊,ulist列表用於儲存學校資訊,html為gethtmltext返回值
pass
def printunivlist(ulist,num): #
列印,num為要列印多少學校
()def
main():
url="
"html=gethtmltext(url)
ulist=
fillunivlist(ulist,html)
printunivlist(ulist,30) #
列印30所學校排名
main()
import執行截圖requests
from bs4 import
beautifulsoup
import
bs4def gethtmltext(url): #
獲取網頁內容
try:
r = requests.get(url,timeout=30)
r.raise_for_status()
return
r.text
except
:
return
"獲取內容失敗。
"def fillunivlist(ulist,html): #
提取資訊,ulist列表用於儲存學校資訊,html為gethtmltext返回值
soup=beautifulsoup(html,"
html.parser
") #
將gethtmltext獲取的內容放到一鍋湯裡
for tr in soup.find('
tbody
').children:
ifisinstance(tr,bs4.element.tag):
tds=tr('td'
)def printunivlist(ulist,num): #
列印,num為要列印多少學校
print("
\t\t
".format("
排名","
學校名稱
","總分"))
for i in
range(num):
u=ulist[i]
print("
\t\t
".format(u[0],u[1],u[2]))
defmain():
url="
"html=gethtmltext(url)
ulist=
fillunivlist(ulist,html)
printunivlist(ulist,30) #
列印30所學校排名
main()
**缺陷
得到的結果排版不工整,於是修改函式
printunivlist(ulist,num),**如下
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)))
這樣就好看很多啦
中國大學教師學術水平排行榜
普通高校38所985工程大學中,有10所沒有進入教師學術水平前38名 9所211工程大學進入前38名 38個985 依次是 華東理工大學 北京化工大學 南京農業大學 首都醫科大學 華中師範大學 南京航空航天大學 東北師範大學 江南大學 中國藥科大學 華中農業大學。有1所既非985 也非211的大學進...
2023年中國大學排行榜
2004中國大學各學科前10名學校 排名 等級 校名 理學1 a 北京大學 2 a 南京大學 3 a 中國科學技術大學 4 a 浙江大學 5 a 清華大學 6 a 復旦大學 7 a 南開大學 8 a 吉林大學 9 a 中山大學 10 a 武漢大學 工學1 a 清華大學 2 a 浙江大學 3 a 上海...
爬取貓眼電影排行榜
匯入我們需要的模組 import reimport requests 一 獲取網頁內容 1 宣告目標url,就是爬取的 位址 base url 2 模仿瀏覽器 headers 3 發起請求 response requests.get base url,headers headers 4 接收響應的資...