我正在尝试删除Html标记之间的一些数据,例如
我有:
<html>
<nav id="123"> .. balaba .. </nav>
<nav id="abeij"> .. baz..</nav>
</html>
我想删除所有导航以获得类似<html> </html>
的内容。
我尝试使用BeautifulSoup和正则表达式,但我找不到信息 如果我想删除所有导航,无论他们的参数如何,并保留剩下的内容
答案 0 :(得分:0)
>>> import re
>>> s = '<html> <nav id="123"> .. balaba .. </nav> <nav id="abeij"> .. baz..</nav> </html>'
>>> re.sub('<nav.*nav>','',s)
'<html> </html>'
答案 1 :(得分:0)
@ Khalil的解决方案 - 使用正则表达式替换从第一个<nav
到最后一个nav>
的所有内容 - 没有任何东西 - 可能是您给出的具体示例的最简单答案。 / p>
关于干净地删除一些html标签及其内容的更一般性问题,您可以使用BeautifulSoup中的decompose()
方法:
from bs4 import BeautifulSoup
doc = """<html>
<nav id="123"> .. balaba .. </nav>
keep me here
<nav id="abeij"> .. baz..</nav>
</html>"""
soup = BeautifulSoup(doc)
for i in soup('nav'):
i.decompose()
soup
# <html>
# <body>
# keep me here
#
# </body></html>
您可以使用此功能删除可以使用BeautifulSoup选择的任何标记集。