我有一个 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
参数......虽然我不关心标签名称并且需要所有节点(以便按其内容过滤)。那么基本上该代码根本不起作用,而只是试图解释我想要实现的目标。
知道我怎么能轻松做到这一点吗?与 minidom 或完全不同的东西?