我们正在从一个内容系统迁移到另一个内容系统,并且有大量的HTML,其中有行,例如,像这样:
<p style="text-align: justify;"><i> </i></p>我正在寻找一种用Python剥离HTML的方法,在那里没有文本输出到屏幕。因此,类似于此的行将被剥离。
而且,这只是许多没有文本输出的行中的一个示例。所以,我需要把它们都找出来脱光。我不必担心图像、电影等,因为在我们的旧内容管理系统中只能使用文本。
顺便说一句,绝大多数代码行要么以p标签开头,要么以div标签开头(忽略前导空格)。
发布于 2012-02-19 02:34:30
如果你在Unix机器上,这个python脚本应该可以工作:
#!/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()https://stackoverflow.com/questions/9343768
复制相似问题