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.