Beautiful Soup - 將物件轉換為字串



Beautiful Soup API 有三種主要型別的物件:soup 物件、Tag 物件和 NavigableString 物件。讓我們瞭解如何將這些物件中的每一個轉換為字串。在 Python 中,字串是 str 物件。

假設我們有以下 HTML 文件

html = '''
<p>Hello <b>World</b></p>
'''

讓我們將此字串作為 BeautifulSoup 建構函式的引數。然後,使用 Python 的內建 str() 函式將 soup 物件型別轉換為字串物件。

此 HTML 字串的解析樹將根據您使用的解析器構建。內建的 html 解析器不會新增 <html> 和 <body> 標籤。

示例

from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
print (str(soup))

輸出

<p>Hello <b>World</b></p>

另一方面,html5lib 解析器在插入 <html> 和 <body> 等正式標籤後構建樹。

from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html5lib')
print (str(soup))

輸出

<html><head></head><body><p>Hello <b>World</b></p>
</body></html>

Tag 物件有一個 string 屬性,它返回一個 NavigableString 物件。

tag = soup.find('b')
obj = (tag.string)
print (type(obj),obj)

輸出

string <class 'bs4.element.NavigableString'> World

Tag 物件還定義了一個 Text 屬性。它返回標籤中包含的文字,並去除所有內部標籤和屬性。

如果 HTML 字串為 -

html = '''
   <p>Hello <div id='id'>World</div></p>
'''

我們嘗試獲取 <p> 標籤的 text 屬性

tag = soup.find('p')
obj = (tag.text)
print ( type(obj), obj)

輸出

<class 'str'> Hello World

您還可以使用 get_text() 方法,該方法返回一個表示標籤內文字的字串。該函式實際上是 text 屬性的包裝器,因為它也會去除內部標籤和屬性,並返回一個字串

obj = tag.get_text()
print (type(obj),obj)

輸出

<class 'str'> Hello World
廣告

© . All rights reserved.