一、方法描述
在调用了多个修改解析树的方法之后,您可能会遇到两个或更多的 NavigableString
对象相邻的情况。smooth()
方法通过合并连续的字符串来平滑化该元素的子元素。这使得在进行了大量修改树的操作后,格式化的输出看起来更加自然。
二、语法
smooth()
三、参数
此方法没有参数。
四、返回类型
此方法在平滑化后返回给定的标签。
五、示例
示例 1
html = '''<html>
<head>
<title>Yoagoa</title>
</head>
<body>
Some Text
<div></div>
<p></p>
<div>Some more text</div>
<b></b>
<i></i> # COMMENT
</body>
</html>'''
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, "html.parser")
soup.find('body').sm
for item in soup.find_all():
if not item.get_text(strip=True):
p = item.parent
item.replace_with('')
p.smooth()
print(soup.prettify())
输出:
<html>
<head>
<title>
Yoagoa
</title>
</head>
<body>
Some Text
<div>
Some more text
</div>
# COMMENT
</body>
</html>
示例 2
from bs4 import BeautifulSoup
soup = BeautifulSoup("<p>Hello</p>", 'html.parser')
soup.p.append(", World")
soup.smooth()
print(soup.p.contents)
print(soup.p.prettify())
输出:
['Hello, World']
<p>
Hello, World
</p>