【问题标题】:Remove HTML block in Python在 Python 中删除 HTML 块
【发布时间】:2016-08-02 15:04:56
【问题描述】:

我想知道 Python 中是否有库或某种方法可以从 HTML 文档中提取元素。例如:

我有这份文件:

<html>
      <head>
          ...
      </head>
      <body>
          <div>
           ...
          </div>
      </body>
</html>

我想从文档中删除&lt;div&gt;&lt;/div&gt;标签块以及块内容,然后它会是这样的:

<html>
    <head>
     ...
    </head>
    <body>
    </body>
</html>

【问题讨论】:

  • 您想只删除&lt;div&gt;&lt;/div&gt; 标签还是同时删除标签和其中的内容?
  • 我想删除标签和它们之间的内容。但只有内容还可以:)
  • 您可以尝试将 html 文件读取为 xml 并删除 div 节点。 wiki.python.org/moin/PythonXml 建议使用 ElementTree
  • 但对我来说最重要的是删除 @SimonHänisch 的内容
  • 移除节点包括移除节点的内容

标签: python html parsing


【解决方案1】:

您不需要为此使用库。只需使用内置的字符串方法。

def removeOneTag(text, tag):
    return text[:text.find("<"+tag+">")] + text[text.find("</"+tag+">") + len(tag)+3:]

这将删除第一个开始标签和结束标签之间的所有内容。因此,您在示例中的输入将类似于...

    x = """<html>
    <head>
      ...
    </head>
    <body>
       <div>
         ...
       </div>
    </body>
</html>"""
print(removeOneTag(x, "div"))

那么如果你想删除所有标签...

while(tag in x):
    x = removeOneTag(x, tag)

【讨论】:

  • 酷。我真的不需要一个库。谢谢!
【解决方案2】:

我个人觉得你不需要图书馆什么的。

你可以简单地编写一个 python 脚本来读取 html 文件和一个正则表达式来匹配你想要的 html 标签,然后用它做任何你想做的事情(在你的情况下删除)

虽然,有一个相同的库。

见官方文档->https://docs.python.org/2/library/htmlparser.html

另请参阅 -> Extracting text from HTML file using Python

【讨论】:

    【解决方案3】:

    尝试使用诸如BeautifulSoup 之类的HTML 解析器来选择&lt;div&gt; DOM 元素。然后您可以使用正则表达式或类似方法将其删除。

    【讨论】:

      猜你喜欢
      • 2016-06-14
      • 2011-01-30
      • 1970-01-01
      • 2023-03-26
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多