更新時(shí)間:2021-04-29 來(lái)源:黑馬程序員 瀏覽量:
截止到目前,BeautifulSoup(3.2.1版本)已經(jīng)停止開(kāi)發(fā),官網(wǎng)推薦現(xiàn)在的項(xiàng)目使用beautifulsoup4(BeautifulSoup 4版本,簡(jiǎn)稱為bs4)開(kāi)發(fā)。
bs4是一個(gè)HTML/XML的解析器,主要的功能是解析和提取HTML/XML數(shù)據(jù)。它不僅支持CSS選擇器,而且支持Python標(biāo)準(zhǔn)庫(kù)中的HTML解析器,以及l(fā)xml的XML解析器,通過(guò)使用這些轉(zhuǎn)化器,實(shí)現(xiàn)了慣用的文檔導(dǎo)航和查找方式,節(jié)省了大量的工作時(shí)間,提高了開(kāi)發(fā)項(xiàng)目的效率。
bs4庫(kù)會(huì)將復(fù)雜的HTML文檔換成樹(shù)結(jié)構(gòu)(HTML DOM),這個(gè)結(jié)構(gòu)中的每個(gè)節(jié)點(diǎn)都是一個(gè)Python對(duì)象,這些對(duì)象可以歸納為如下四種:
bs4.element.Tag類(lèi):表示HTML中的標(biāo)簽,最基本的信息組織單元。它有兩個(gè)非常重要的屬性,分別為表示標(biāo)簽名字的name屬性,表示標(biāo)簽屬性的attrs屬性。
bs4.element.NavigableString類(lèi):表示HTML中標(biāo)簽的文本(非屬性字符串)。
bs4.BeautifulSoup類(lèi):表示HTML DOM中的全部?jī)?nèi)容,支持遍歷文檔樹(shù)和搜索文檔樹(shù)的大部分方法。
bs4.element.Comment類(lèi):表示標(biāo)簽內(nèi)字符串的注釋部分,是一種特殊的NavigableString對(duì)象。
使用bs4的一般流程如下:
第1步:創(chuàng)建一個(gè)BeautifulSoup類(lèi)型的對(duì)象
根據(jù)HTML或者文件創(chuàng)建BeautifulSoup對(duì)象。
第2步:通過(guò)上述對(duì)象的操作方法進(jìn)行解讀搜索
根據(jù)DOM樹(shù)進(jìn)行各種節(jié)點(diǎn)的搜索(比如,find_all方法可以搜索出所有滿足要求的節(jié)點(diǎn),find方法只會(huì)搜索出第一個(gè)滿足要求的節(jié)點(diǎn)),只要獲得了一個(gè)節(jié)點(diǎn),就可以訪問(wèn)節(jié)點(diǎn)的名稱、屬性和文本。
第3步:利用DOM樹(shù)結(jié)構(gòu)標(biāo)簽的特性,進(jìn)行更為詳細(xì)的節(jié)點(diǎn)信息提取
在搜索節(jié)點(diǎn)的時(shí)候,我們也可以按照節(jié)點(diǎn)的名稱、節(jié)點(diǎn)的屬性或者節(jié)點(diǎn)的文字進(jìn)行搜索。
上述流程如圖1所示。
圖1 bs4庫(kù)的使用流程
猜你喜歡:
怎樣能保障Kafka儲(chǔ)存的數(shù)據(jù)不丟失?
MyBatis框架如何實(shí)現(xiàn)數(shù)據(jù)查詢?有幾種方法?
在數(shù)據(jù)處理中哪些場(chǎng)景可以使用Spark?
什么是XML?怎樣使用XML解析樹(shù)狀結(jié)構(gòu)數(shù)據(jù)?
黑馬程序員Python+大數(shù)據(jù)開(kāi)發(fā)培訓(xùn)