要展示一个HTML文档的完整解析树或某个特定标签的内容,你可以使用print()
函数或者调用str()
函数。
示例
from bs4 import BeautifulSoup
soup = BeautifulSoup("<h1>Hello World</h1>", "lxml")
print("Tree:", soup)
print("h1 tag:", str(soup.h1))
输出
Tree: <html><body><h1>Hello World</h1></body></html>
h1 tag: <h1>Hello World</h1>
str()
函数返回一个UTF-8编码的字符串。
为了获得一个格式良好的Unicode字符串,可以使用Beautiful Soup的prettify()
方法。这个方法会格式化Beautiful Soup的解析树,使得每个标签都在单独的一行上,并且带有缩进。这样可以帮助你更容易地可视化Beautiful Soup解析树的结构。
考虑以下HTML字符串:
<p>The quick, <b>brown fox</b> jumps over a lazy dog.</p>
使用prettify()
方法我们可以更好地理解其结构:
示例
html = '''
<p>The quick, <b>brown fox</b> jumps over a lazy dog.</p>
'''
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, "lxml")
print(soup.prettify())
输出
<html>
<body>
<p>
The quick,
<b>
brown fox
</b>
jumps over a lazy dog.
</p>
</body>
</html>
你可以对文档中的任何一个Tag对象调用prettify()
。
print(soup.b.prettify())
输出
<b>
brown fox
</b>
prettify()
方法是为了帮助理解文档的结构。然而,不应该用来重新格式化文档,因为它会添加空白(换行的形式),并且会改变HTML文档的意义。
prettify()
方法可以可选地提供formatter
参数来指定使用的格式化方式。