一、方法描述
在 BeautifulSoup 库中,clear() 方法会移除标签的内部内容,同时保留标签本身不变。如果存在任何子元素,则会调用 extract() 方法。如果设置了 decompose 参数为 True,则会调用 decompose() 方法代替 extract() 方法。
二、语法
clear(decompose=False)
三、参数
-
decompose:如果为 True,则调用 decompose() 方法(一种更具破坏性的方法)来代替 extract() 方法。
四、返回值
clear() 方法不会返回任何对象。
五、示例
示例 1
当 clear() 方法被调用在表示整个文档的 soup 对象上时,所有内容都会被移除,留下一个空白的文档。
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.clear()
print(soup)
输出:
示例 2
在下面的例子中,我们查找所有的 <p> 标签,并对每个标签调用 clear() 方法。
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")
tags = soup.find_all('p')
for tag in tags:
tag.clear()
print(soup)
输出:
<html>
<body>
<p></p>
<p></p>
<p></p>
<p></p>
</body>
</html>
示例 3
在这里,我们清除 <body> 标签的内容,并设置 decompose 参数为 True。
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")
tags = soup.find('body')
ret = tags.clear(decompose=True)
print(soup)
输出:
<html>
<body></body>
</html>