gpt4 book ai didi

python - 如何删除没有内容的标签

转载 作者:太空狗 更新时间:2023-10-29 15:29:52 27 4
gpt4 key购买 nike

我正在处理一些具有大量空标签的旧 html:<i style='mso-bidi-font-style:normal'><span style='font-size:11.0pt;font-family: Univers;mso-bidi-font-family:Arial'><o:p></o:p></span></i> .这严重破坏了我用来遍历树的算法。

有没有办法在遍历之前清理 BeautifulSoup 对象?

from bs4 import BeautifulSoup

html_object = """
<i style='mso-bidi-font-style:normal'><span style='font-size:11.0pt;font-family:
Univers;mso-bidi-font-family:Arial'><o:p></o:p></span></i>
"""
soup = BeautifulSoup(html_object, "lxml")

甚至没有.prettify()能够删除空标签:

>>> print(soup.prettify())
<html>
<body>
<i style="mso-bidi-font-style:normal">
<span style="font-size:11.0pt;font-family:
Univers;mso-bidi-font-family:Arial">
<o:p>
</o:p>
</span>
</i>
</body>
</html>

我希望看到此调用的输出完全为空。

最佳答案

如果您只关注文本元素,那么下面的方法怎么样?这将删除所有不包含文本的元素,例如图像。添加任何不得删除的标签,例如 brimg

这实际上取决于您想要保留的结构。

from bs4 import BeautifulSoup

html_object = """
<i style='mso-bidi-font-style:normal'><span style='font-size:11.0pt;font-family:
Univers;mso-bidi-font-family:Arial'><o:p></o:p></span></i>
<i>hello world</i>
"""
soup = BeautifulSoup(html_object, "lxml")

for x in soup.find_all():
if len(x.get_text(strip=True)) == 0 and x.name not in ['br', 'img']:
x.extract()

print(soup)

给予:

<html><body>
<i>hello world</i>
</body></html>

关于python - 如何删除没有内容的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33500888/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com