Beautiful Soup - prettify() 方法



方法描述

要获得格式良好的 Unicode 字符串,请使用 Beautiful Soup 的 prettify() 方法。它会格式化 Beautiful Soup 解析树,使每个标签都位于带有缩进的单独行上。它允许您轻松地可视化 Beautiful Soup 解析树的结构。

语法

prettify(encoding, formatter)

参数

  • encoding − 字符串最终的编码。如果为 None,则返回 Unicode 字符串。

  • Formatter 对象,或命名其中一个标准格式化程序的字符串。

返回类型

prettify() 方法返回 Unicode 字符串(如果 encoding==None)或字节串(否则)。

示例 1

考虑以下 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>

示例 2

您可以在文档中的任何 Tag 对象上调用 prettify()。

print (soup.b.prettify())

输出

<b>
   brown fox
</b>

prettify() 方法用于理解文档的结构。但是,不应使用它来重新格式化文档,因为它会添加空格(以换行符的形式),并更改 HTML 文档的含义。

prettify() 方法可以选择提供 formatter 参数来指定要使用的格式。

formatter 有以下几种可能的值:

formatter="minimal" − 这是默认值。字符串只会经过足够的处理,以确保 Beautiful Soup 生成有效的 HTML/XML。

formatter="html" − Beautiful Soup 会尽可能将 Unicode 字符转换为 HTML 实体。

formatter="html5" − 与 formatter="html" 类似,但 Beautiful Soup 会省略 HTML 空标签(如 "br")中的结束斜杠。

formatter=None − Beautiful Soup 根本不会修改输出中的字符串。这是最快的选项,但它可能导致 Beautiful Soup 生成无效的 HTML/XML。

示例 3

from bs4 import BeautifulSoup

french = "<p>Il a dit <<Sacré bleu!>></p>"
soup = BeautifulSoup(french, 'html.parser')
print ("minimal: ")
print(soup.prettify(formatter="minimal"))
print ("html: ")
print(soup.prettify(formatter="html"))
print ("None: ")
print(soup.prettify(formatter=None))

输出

minimal: 
<p>
 Il a dit <
 <sacré bleu!="">
  >
 </sacré>
</p>
html: 
<p>
 Il a dit <
 <sacré bleu!="">
  >
 </sacré>
</p>
None: 
<p>
 Il a dit <
 <sacré bleu!="">
  >
 </sacré>
</p>
广告
© . All rights reserved.