Beautiful Soup - encode() 方法



方法描述

Beautiful Soup 中的 encode() 方法會呈現給定 PageElement 及其內容的位元組字串表示形式。

prettify() 方法允許您輕鬆地視覺化 Beautiful Soup 解析樹的結構,它具有 encoding 引數。encode() 方法的作用與 prettify() 方法中的 encoding 引數相同。

語法

encode(encoding, indent_level, formatter, errors)

引數

  • encoding − 目標編碼。

  • indent_level − 渲染的每一行將

  • 縮排這麼多級。在美化列印時的遞迴呼叫中內部使用。

  • formatter − Formatter 物件,或一個字串,表示標準格式化程式之一。

  • errors − 錯誤處理策略。

返回值

encode() 方法返回標籤及其內容的位元組字串表示形式。

示例 1

預設情況下,encoding 引數為 utf-8。以下程式碼顯示了 soup 物件的編碼位元組字串表示形式。

from bs4 import BeautifulSoup

soup = BeautifulSoup("Hello “World!”", 'html.parser')
print (soup.encode('utf-8'))

輸出

b'Hello \xe2\x80\x9cWorld!\xe2\x80\x9d'

示例 2

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。

在以下示例中,不同的 formatter 值用作 encode() 方法的引數。

from bs4 import BeautifulSoup

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

輸出

minimal: 
b'<p>Il a dit <<Sacr\xc3\xa9 bleu!>></p>'
html:
b'<p>Il a dit <<Sacré bleu!>></p>'
None:
b'<p>Il a dit <<Sacr\xc3\xa9 bleu!>></p>'

示例 3

以下示例使用 Latin-1 作為 encoding 引數。

markup = '''
<html>
   <head>
      <meta content="text/html; charset=ISO-Latin-1" http-equiv="Content-type" />
   </head>
   <body>
      <p>Sacr`e bleu!</p>
   </body>
</html>
'''
from bs4 import BeautifulSoup

soup = BeautifulSoup(markup, 'lxml')
print(soup.p.encode("latin-1"))

輸出

b'<p>Sacr`e bleu!</p>'
廣告