python - 写入html文件转换特殊字符

时间:2015-08-11 12:33:52

标签: python html elementtree

我正在尝试使用python写入一个html文件,我添加的任何标签都被隐藏了

e.g。 <tr>&lt;tr&gt;

知道为什么会这样,以及如何避免它?

在html页面中,我插入的确切文本显示而不是被视为html标记

守则的一部分:

htmlReport=ElementTree()
htmlReport.parse('result_templte.html')
strTable="<tr><td>Text here</td></tr>"

for node in htmlReport.findall('.//*[@id="table1"]')
    node.text=strTable

htmlReport.write("results.html")

将html标记写为&lt; &gt;到文件中。所以插入的标签不会被视为正确的html标签

1 个答案:

答案 0 :(得分:3)

您正在尝试将元素添加为另一个元素的子元素,但实际上您只是添加了恰好包含<>标记分隔符的纯文本字符串。要使其工作,您需要解析字符串以获取新的元素对象并在正确的位置添加(追加)它。

我们假设template.html看起来像这样:

<html>

 <table>
 </table>

 <table id="table1">
 </table>

</html>

然后,您可以添加tr元素作为第二个table的子元素,如下所示:

from xml.etree import ElementTree as ET

tree = ET.parse('template.html')

# Get the wanted 'table' element
table = tree.find(".//table[@id='table1']")

# Parse string to create a new element
tr = ET.fromstring("<tr><td>Text here</td></tr>")

# Append 'tr' as a child of 'table'
table.append(tr)

tree.write("results.html")

这就是results.html的样子:

<html>

 <table>
 </table>

 <table id="table1">
 <tr><td>Text here</td></tr></table>

</html>