import requests
from bs4 import beautifulsoup
import bs4
defgethtmltext
(url):
try:
r = requests.get(url)
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:
if isinstance(tr,bs4.element.tag ): #判斷tbody的子節點是否為標籤屬性,需引入bs4庫
tds = tr('td')
defprintunivlist
(ulist,num):
tplt = "\t^10}\t"
#冒號前為引用format中引數的位置,0、1、2分別代表排名、學校、分數,^表示居中對齊,:與^之前的代表填充內容,10為列寬
print(tplt.format('排名','學校','分數',chr(12288))) #chr(12288)為中文空格,上句中表示引用這個內容
for i in range(num):
u = ulist[i] #ulist形式為:[[0, 0, 1], [0, 0, 2], ...], ulist[0]=[0, 0, 1],所以u[0]、u[1]、u[2]對應數字0,0,1
print(tplt.format(u[0],u[1],u[2],chr(12288)))
defmain
(): url = ''
ulist = #別忘了定義ulist屬性為列表
html = gethtmltext(url)
fillunivlist(ulist, html)
printunivlist(ulist,30)
main()
方式高階:儲存爬取資料
import requests
import re
from bs4 import beautifulsoup
import bs4
import pandas as pd
try:
r = requests.get("")
except:
print("")
html = r.text
seq=
school=
province=
score=
soup = beautifulsoup(html, "html.parser")
for tr in soup.find('tbody','hidden_zhpm').children:
if isinstance(tr,bs4.element.tag):
tds = tr('td')
u_info = pd.dataframe([school,province,score]).t #爬取的列表資訊整理成**物件
u_info = u_info.rename(columns=) #加表頭
u_info.to_csv('univ_info.csv',index=false) #儲存到【univ_info.csv】**
python爬取大學排名
返回載入出來的資料 def gethtmltext url return 解析列表 def fillunivlist ulist,html pass 列印資料 def printunivlist ulist,num pass 進行呼叫函式,返回結果 def main unifo url 載入html...
python爬取最好大學排名
coding gbk import requests from bs4 import beautifulsoup import bs4 def gethtmltext url 將url資訊爬取,並將html頁面返回給其他程式 try r requests.get url,timeout 30 30m...
中國大學排名定向爬取
步驟一 從網路上獲取大學排名網頁內容 步驟二 提取網頁內容中資訊到合適的資料結構 步驟三 利用資料結構展示並輸出結果 通過右鍵檢視其網頁源 可得到如下介面 我們在這個介面找到如下資訊,可以發現,這些資訊是在tbody標籤下的,tr下面的td中就是我們想要爬取的資訊。我們僅爬取前四個td值進行返回,第...