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>
廣告