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...