html解析のBeautifulSoup
引子:
使用python爬蟲對爬取網(wǎng)頁進(jìn)行解析的時候,如果使用正則表達(dá)式,有很多局限,比如標(biāo)簽中出現(xiàn)換行,或者標(biāo)簽的格式不規(guī)范,都有可能出現(xiàn)取不到數(shù)據(jù),BeautifulSoup作為一個專門處理html格式的python第三方庫,在格式處理上要明顯優(yōu)與正則表達(dá)式,而且使用簡便。
安裝:
下載beautifulsoup4-4.5.0,打開cmd,進(jìn)入beautifulsoup文件目錄,執(zhí)行python setup.py install 進(jìn)行安裝
打開python命令行,執(zhí)行from bs4 import BeautifulSoup 成功,則安裝成功
使用:
獲取指定標(biāo)簽及內(nèi)容
soup=BeautifulSoup(text,"html.parser") ?#text為html文本,"html.parser"指按html格式進(jìn)行解析
li= soup.find_all(name="li",attrs={"class":"rlbh"}) #查找所有l(wèi)i標(biāo)簽,class類型為rlbh
find只返回第一個標(biāo)簽,find_all返回所有標(biāo)簽,findAll是beautifulsoup3 的方法,在bs4中也可以用,find_all是bs4中的方法。
find_all返回結(jié)果為list類型,如果需要在返回結(jié)果中繼續(xù)匹配可以這樣:
li= soup.find_all(name="li",attrs={"class":"rlbh"})
for i in li:
#get count
lbdj=i.find_all(name="span",attrs={"class":"lbdj"}) ?#匹配li結(jié)果中的所有span標(biāo)簽,且class類型為lbdj
獲取鏈接
a=span[0].find_all(name="a",attrs={"target":"_blank"}) ?#獲取a標(biāo)簽
href=a[0].get('href') ?#獲取a標(biāo)簽中href屬性的內(nèi)容
也可以直接a[0]['href'] 獲取
獲取內(nèi)容
title=a[0].getText() ?#獲取a標(biāo)簽中的文本
如:<a href="http:127.0.0.1">localhost</a>獲取到的就是localhost
??
轉(zhuǎn)載于:https://www.cnblogs.com/taurusfy/p/6867281.html
總結(jié)
以上是生活随笔為你收集整理的html解析のBeautifulSoup的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。