首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从HTML中删除空节点

从HTML中删除空节点
EN

Stack Overflow用户
提问于 2012-02-19 02:09:55
回答 4查看 398关注 0票数 7

我们正在从一个内容系统迁移到另一个内容系统,并且有大量的HTML,其中有行,例如,像这样:

代码语言:javascript
运行
复制
<p style="text-align: justify;"><i> </i></p>

我正在寻找一种用Python剥离HTML的方法,在那里没有文本输出到屏幕。因此,类似于此的行将被剥离。

而且,这只是许多没有文本输出的行中的一个示例。所以,我需要把它们都找出来脱光。我不必担心图像、电影等,因为在我们的旧内容管理系统中只能使用文本。

顺便说一句,绝大多数代码行要么以p标签开头,要么以div标签开头(忽略前导空格)。

EN

Stack Overflow用户

发布于 2012-02-19 02:34:30

如果你在Unix机器上,这个python脚本应该可以工作:

代码语言:javascript
运行
复制
#!/usr/bin/python

import sys
import os
import subprocess
import tempfile

if len(sys.argv) < 2:
    sys.exit("usage: %s HTML_FILE" % sys.argv[0])

stylesheet = '''
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="*[string-length(normalize-space(.)) = 0]"/>

      <xsl:template match="@*|node()">
         <xsl:copy>
           <xsl:apply-templates select="@*|node()"/>
         </xsl:copy>
      </xsl:template>

    </xsl:stylesheet>
'''

stylesheet_file = tempfile.NamedTemporaryFile(suffix='.xslt')
stylesheet_file.write(stylesheet)
stylesheet_file.flush()

p = subprocess.Popen("xsltproc --html %s %s" % (stylesheet_file.name, sys.argv[1]), 
        shell=True, stdout=subprocess.PIPE)

p.wait()
sys.stdout.write(p.stdout.read())
stylesheet_file.close()
票数 2
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9343768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档