删除html标签中的数据 - Python

时间:2015-06-16 14:15:34

标签: python html regex

我正在尝试删除Html标记之间的一些数据,例如

我有:

<html> 
   <nav id="123"> .. balaba .. </nav> 
   <nav id="abeij"> .. baz..</nav> 
</html>

我想删除所有导航以获得类似<html> </html>的内容。

我尝试使用BeautifulSoup和正则表达式,但我找不到信息 如果我想删除所有导航,无论他们的参数如何,并保留剩下的内容

2 个答案:

答案 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选择的任何标记集。