Beautiful Soup API有三种主要的对象类型:soup对象、Tag对象和NavigableString对象。让我们来看看如何将这些对象转换为字符串。在Python中,字符串是一个str
对象。
假设我们有以下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)
输出
<class 'bs4.element.NavigableString'> World
Tag对象也有定义text
属性。它返回标签内包含的文本,去除所有的内部标签和属性。
如果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