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