Python爬蟲學習 中國大學排名定向實戰

2021-10-08 08:39:44 字數 2677 閱讀 6365

requests定向爬取網頁資訊

import bs4

import requests

from bs4 import beautifulsoup

defgethtmltext

(url)

:"""通過最好大學排名**url獲得網頁html資訊"""

try:

r = requests.get(url)

r.raise_for_status(

) print

("網頁資訊爬取成功!"

)return r.text

except

:print

("爬取失敗"

)

(1)從html頁面中發現大學的資訊都包含在tbody標籤中,

(2)tbody標籤含有的子節點不一定都是bs4庫中的tag型別,用isinstance(a,b)區分一下 //a是否是b型別的乙個例項化?

(3)將包含院校資訊的tr標籤(即名稱為td的標籤)存入列表tds

def

fillunivlist

(ulist,html)

:"""從html頁面內容中提取出大學排名資訊,填入ulist中"""

soup = beautifulsoup(html,

"html.parser"

)for tr in soup.find(

'tbody'

).children:

ifisinstance

(tr,bs4.element.tag)

:

tds = tr(

'td'

)

[tds[0]

.string,tds[1]

.string,tds[2]

.string]

)

關鍵操作:

使用輸出模板和format輸出函式,按照索引順序輸出

def

printunivlist

(ulist,num)

:"""將存在ulist中的院校資訊列印出來"""

# print("\t\t\t".format("排名","學校名稱","省市"))

# for i in range(num):

# u = ulist[i]

# print("\t\t\t".format(u[0],u[1],u[2]))

tplt =

"\t^10}\t\t"

#制定乙個輸出模板,按0、1、2、3數字位置填充輸出的內容

print

(tplt.

format

("排名"

,"學校名稱"

,"省市"

,chr

(12288))

)for i in

range

(num)

: u = ulist[i]

print

(tplt.

format

(u[0

],u[1]

,u[2],

chr(

12288))

)print

("suc"

+str

(num)

)

def

main()

: uinfo =

url =

""html = gethtmltext(url)

fillunivlist(uinfo,html)

printunivlist(uinfo,

20)

1.1按位置索引輸出
>>

>

"{} {}"

.format

("hello"

,"world"

)# 不設定指定位置,按預設順序

'hello world'

>>

>

" ".

format

("hello"

,"world"

)# 設定指定位置

'hello world'

>>

>

" "

.format

("hello"

,"world"

)# 設定指定位置

'world hello world'

1.2設定引數輸出

1.3傳入物件

format數字格式化

由於中英文空格字元的長短不同,導致長短不一的情況下,系統自動用西文字元的空格填補空缺,導致中文對齊問題
解決辦法:
使用chr(12288)這個中文空格填充在可能產生對齊問題的位置

Python爬蟲 中國大學排名爬蟲

案例 import requests from bs4 import beautifulsoup import bs4 def gethtmltext url 爬取最好大學排名 內容 try r requests.get url,timeout 30 r.raise for status retur...

爬蟲中國大學排名

from pip.vendor import requests print 訪問谷歌 獲取response物件 r requests.get x 1 while x 20 print 第 str x 次的返回狀態列印 str r.status code print 第 str x 次的text 列印...

Python之爬蟲 中國大學排名

usr bin env python coding utf 8 import bs4 import requests from bs4 import beautifulsoup 通過傳入 資訊建立乙個獲取網頁文字的函式 def gethtmltext url 判斷獲取網頁文字過程中是否有錯誤 try...