最好大學網
2018大學排名
功能描述:
輸出:大學排名資訊的螢幕輸出(排名,大學名稱,總分)
技術路線:requests庫和bs4庫
定向爬蟲:僅對輸入的url進行爬取,不擴充套件爬取
步驟:1、輸入url**,檢視源**,發現資訊都在html檔案中
2、開啟發現:not found,說明沒有對爬取進行robots協議限制,可以進行爬取
3、程式的結構設計:
步驟1,從網路上獲取大學排名網頁內容,gethtmltext()
步驟2、提取網頁內容中資訊到合適的資料結構,fillunivlist()
步驟3、利用資料結構展示並輸出結果,printunivlist()
**:
import結果展示:requests
from bs4 import
beautifulsoup
import bs4#
為了使用bs4的標籤函式
#獲取頁面資訊
defgethtmltext(url):
try:
r=requests.get(url,timeout=30)
r.raise_for_status()
return
r.text
except
:
return''#
將資料存到list中
deffillunivlist(ulist,html):
soup=beautifulsoup(html,'
html.parser')
#檢視html原始碼發現每一所大學都在tbody標籤中,這裡乙個tr表示一所大學
for tr in soup.find('
tbody
').children:
if isinstance(tr,bs4.element.tag):#
判斷是否為標籤型別,過濾掉字串
tds=tr('td'
)
#pass
#將num個list中的資料列印顯示出來,視覺化輸出
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]))
#print('suc'+str(num))
#主函式
defmain():
uinfo=#
待放入資料的列表
url='
'html=gethtmltext(url)
fillunivlist(uinfo,html)
printunivlist(uinfo,20)#
列印20組資料
main()
以上程式有乙個問題,就是總分一欄輸出的竟然是省份,這其實是這一行**的問題:
#這裡應該改為
#更改後就沒有問題了。
在這裡我們的設計思路是:
先搭建程式的框架,先定義三個函式名,然後定義主函式,主函式會依次呼叫三個函式,然後再分別充實三個子函式,一步步的寫,這是寫程式的正確方法。
當遇到bug時,我們可以逐步排查,比如先執行第乙個程式,看看是否已經獲得html檔案,再逐步檢查。
**優化:
format屬性
中文對齊的問題:
:《填充》
《對齊》
《寬度》
,《精度》
《型別》
引號符號
用於填充
的單個字元
《左對齊
>右對齊
^居中對齊
槽的設定
輸出寬度
數字的千位
分隔符適用
於整數和浮點數
浮點數小數部分
的精度或字串
的最大輸出長度
整數型別b,c,d,
o,x,x浮點數型別
e,e,f,%
當中文字元寬度不夠時,採用西文字元填充;中西文本元占用寬度不同。
解決方法:採用中文空格填充chr(12288)
將print**函式做修改
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)))
爬取中國大學排名情況(前100)
import requests from bs4 import beautifulsoup alluniv 獲取所要爬取的html文字內容 defgethtmltext url try r requests.get url,timeout 30 r.raise for status return r...
中國大學排名定向爬取
步驟一 從網路上獲取大學排名網頁內容 步驟二 提取網頁內容中資訊到合適的資料結構 步驟三 利用資料結構展示並輸出結果 通過右鍵檢視其網頁源 可得到如下介面 我們在這個介面找到如下資訊,可以發現,這些資訊是在tbody標籤下的,tr下面的td中就是我們想要爬取的資訊。我們僅爬取前四個td值進行返回,第...
中國大學排名的爬取
功能描述 輸入 大學排名的url鏈結 輸出 大學排名資訊的螢幕輸出 排名,大學名稱,總分 技術路線 requests bs4 定向爬蟲 進隊輸入url進行爬取,不擴充套件爬取 程式的結構設計 步驟一 從網路上獲取頁面資訊 gethtmltext 步驟二 提取網頁內容中資訊到合適的資料結構 fillu...