Beautiful Soup - decompose() 方法



方法描述

decompose() 方法會銷燬當前元素及其所有子元素,從而將元素從樹中移除,將其及所有子元素全部刪除。您可以透過 `decomposed` 屬性檢查元素是否已被銷燬。如果已被銷燬,則返回 True,否則返回 False。

語法

decompose()

引數

此方法沒有定義任何引數。

返回型別

此方法不返回任何物件。

示例 1

當我們在 BeautifulSoup 物件本身呼叫 descompose() 方法時,整個內容將被銷燬。

html = '''
<html>
   <body>
      <p>The quick, brown fox jumps over a lazy dog.</p>
      <p>DJs flock by when MTV ax quiz prog.</p>
      <p>Junk MTV quiz graced by fox whelps.</p>
      <p>Bawds jog, flick quartz, vex nymphs.</p>
   </body>
</html>
'''
from bs4 import BeautifulSoup

soup = BeautifulSoup(html, "html.parser")
soup.decompose()
print ("decomposed:",soup.decomposed)
print (soup)

輸出

decomposed: True
document: Traceback (most recent call last):
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
TypeError: can only concatenate str (not "NoneType") to str

由於 soup 物件已被銷燬,因此它返回 True,但是,您會得到如上所示的 TypeError。

示例 2

下面的程式碼使用 decompose() 方法移除 HTML 字串中所有 <p> 標籤的出現。

html = '''
<html>
   <body>
      <p>The quick, brown fox jumps over a lazy dog.</p>
      <p>DJs flock by when MTV ax quiz prog.</p>
      <p>Junk MTV quiz graced by fox whelps.</p>
      <p>Bawds jog, flick quartz, vex nymphs.</p>
   </body>
</html>
'''
from bs4 import BeautifulSoup

soup = BeautifulSoup(html, "html.parser")
p_all = soup.find_all('p')
[p.decompose() for p in p_all]

print ("document:",soup)

輸出

移除所有 <p> 標籤後,將列印剩餘的 HTML 文件。

document: 
<html>
<body>

</body>
</html>

示例 3

在這裡,我們從 HTML 文件樹中找到 <body> 標籤,並銷燬其之前的元素,該元素恰好是 <title> 標籤。生成的文件樹省略了 <title> 標籤。

html = '''
<html>
   <head>
      <title>TutorialsPoint</title>
   </head>
   <body>
      Hello World
   </body>
</html>

'''
from bs4 import BeautifulSoup

soup = BeautifulSoup(html, "html.parser")
tag = soup.body
tag.find_previous().decompose()

print ("document:",soup)

輸出

document: 
<html>
<head>

</head>
<body>
Hello World
</body>
</html>
廣告

© . All rights reserved.