BeautifulSoup常用總結


簡介

BeautifulSoup是一個解析HTML或XML文件的庫。

對於HTML或XML文件,可以用DOM模型解釋。DOM模型可看作節點的集合,它有三種節點:

  • 元素節點
  • 文本節點
  • 屬性節點

元素節點即HTML或XML的標簽,文本節點即標簽內部的文本內容,屬性節點即每個標簽的屬性。

總的來說,BeautifulSoup庫即是對上述三種節點的操作。

對象介紹

BeautifulSoup庫有四類對象,這里介紹它們的常用方法和屬性。

BeautifulSoup對象

該對象是這庫的起點,它表示HTML或XML文檔,該對象由BeautifulSoup()實例化。

BeautifulSoup()接受一個strbyte對象,由於該庫自帶編碼自動檢測,它會把當前文檔編碼並轉換成Unicode編碼。

該對象除沒有name和attribute屬性,其用法基本和Tag對象相同。

Tag對象

Tag.name返回標簽的名字。

Tag.attrs返回標簽的屬性鍵值對,是一個dict對象。

Tag[attr]獲取屬性值。如果屬性在HTML中是多值屬性,則返回list對象,否則返回str對象。

Tag[attr] = value為屬性賦值。如果屬性在HTML中是多值屬性,則value是list對象,否則是str對象。

Tag.string返回文本節點。如果標簽內部文本節點不唯一,則返回Null。

Tag.strings返回標簽內所有文本節點。

Tag.contents返回子節點列表,是list對象。

該對象指Tag內部的文本節點, Tag.stringTag.strings即返回該對象。

由於文本節點無法編輯,只能替換。我們可以通過NavigableString對象的Tag.string.replace_with()方法替換文本節點,該方法接受一個str對象。

Comment對象

Comment對象可以說是NavigableString類的子類,它返回注釋標簽的文本節點。

文檔樹

搜索文檔樹

主要方法是find_all( name , attrs , recursive , text , **kwargs )

參數name指標簽名字,可以是字符串、正則表達式、列表、方法。如果傳入正則表達式,BeautifulSoup會自動調用match()匹配內容;如果傳入列表,只要列表中某個成員匹配即返回;如果傳入方法,它接受一個參數Tag,只要返回True即匹配。

attrsdict對象,代表標簽的屬性鍵值對。它的屬性值可以是字符串、正則表達式、列表、方法,可選關鍵字kwargs其屬性值同此一樣。

text參數可以搜搜文檔中的字符串內容。與name參數的可選值一樣,text參數接受字符串,正則表達式 ,列表,方法。

limit參數限制返回的條目數量,即列表的長度。

recursive是個開關,該方法默認放回所有子孫節點,如果recursive=False,方法只返回兒子節點。

遍歷文檔樹

Tag.children,僅返回子節點。

Tag.descendants,返回子孫節點

Tag.parent,僅返回父節點。

Tag..parents,返回父輩節點。

Tag.previous_sibling,返回上個同級兄弟節點。

Tag.next_sibling,返回下個同級兄弟節點。

Tag.previous_siblings,返回上面同級兄弟節點。

Tag.next_siblings,返回下面同級兄弟節點。

其他

Tag.get_text()返回tag中包含的文本內容,包括子孫tag中的內容。

BeautifulSoup.original_encoding獲取原文檔的編碼。

BeautifulSoup對象和Tagprettify()方法可以格式化輸出,該方法默認輸出編碼為UTF-8


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM