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.