【问题标题】:Remove data within html tags - Python删除 html 标签中的数据 - Python
【发布时间】:2015-06-16 14:15:34
【问题描述】:

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

我有:

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

我想删除所有导航以获得类似&lt;html&gt; &lt;/html&gt; 的内容。

我尝试使用 BeautifulSoup 和正则表达式,但找不到信息 如果我想删除所有导航,不管它们的参数是什么并保留剩下的

【问题讨论】:

  • 您能否发布到目前为止您尝试过但不起作用的代码示例,以便我们帮助您调试它?
  • 最好同时尝试,BeautifulSoup 和正则表达式。所以我们可以在这两个方面提供帮助。

标签: python html regex


【解决方案1】:

@Khalil 的解决方案 -- 使用正则表达式替换从第一个 &lt;nav 到最后一个 nav&gt; 的所有内容 -- 对于您给出的具体示例,这可能是最简单的答案。

对于干净地删除一些 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 选择的任何一组标签。

【讨论】:

    【解决方案2】:
    >>> import re
    
    >>> s = '<html> <nav id="123"> .. balaba .. </nav> <nav id="abeij"> .. baz..</nav> </html>'
    
    >>> re.sub('<nav.*nav>','',s)
    '<html>  </html>'
    

    【讨论】:

    • 有人应该明白这一点吗?你能解释一下你的方法和代码在做什么吗?
    猜你喜欢
    • 1970-01-01
    • 2017-07-01
    • 2020-03-08
    • 2017-02-22
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 2018-02-10
    相关资源
    最近更新 更多