我有一个html文档,其中一些元素包含我想隐藏的内容(比如中国政府正在做的事情,除了我只是想隐藏机密信息)。例如说我有:python:根据内容替换HTML元素
<div>
<span> bkhiu jknd o so so so yui iou 789 </span>
<span>
bkhiu
<div> 56 898tr SECRET oij890 </div>
</span>
</div>
我想所有包含字符串SECRET
的元素,只是###取代他们的全部内容:
<div>
<span> bkhiu jknd o so so so yui iou 789 </span>
<span>
bkhiu
<div>###</div>
</span>
</div>
我曾想过使用minidom
和re
的东西,如:
xmldoc = minidom.parseString(my_html_string)
# filtering nodes by their content
sensitive_nodes = filter(lambda n: re.search('SECRET', n.nodeValue),
xmldoc.getElementsByTagName())
# replacing content
for node in sensitive_nodes:
node.nodeValue = '###'
# output
my_html_string = xmldoc.toxml()
但首先解析甚至没有成功:
ExpatError: mismatched tag: line 27, column 6
而且.getElementsByTagName()
需要tagName
参数......虽然我不关心标签名称和需要的所有节点(为了通过他们的内容进行筛选)。那么基本上,这些代码根本不起作用,但只是试图解释我想实现的目标。
任何想法如何我可以轻松地做到这一点?用小型号或者完全不同的东西?
你好,你说明这行是第27? :) – Skurmedel 2011-04-12 11:39:59
对!这是文档的开始:http://dpaste.com/531242/(和27是最后一个,即使它显示为24这里...) – sebpiq 2011-04-12 11:45:08