一部の要素に隠したいものが含まれているhtmlドキュメントがあります(機密情報を隠したいだけであることを除いて、中国政府が行っているように)。たとえば、私が持っているとしましょう:
<div>
<span> bkhiu jknd o so so so yui iou 789 </span>
<span>
bkhiu
<div> 56 898tr SECRET oij890 </div>
</span>
</div>
そして、 string を含むすべての要素を取得し、SECRET
コンテンツ全体を ### に置き換えるだけです:
<div>
<span> bkhiu jknd o so so so yui iou 789 </span>
<span>
bkhiu
<div>###</div>
</span>
</div>
私は次のようなものでminidom
andre
を使用することを考えました:
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 またはまったく異なるものとは?