我正在尝试编写一个修改< script>的内容的python脚本我正在解析的文件中的标记。由于它的速度,我正在使用lxml.html(而不是BeautifulSoup等)。脚本标记的内容包含在注释标记(<! - 和 - >)中:
<script>
<!--
...
-->
</script>
问题是当我尝试像scriptNode.text = '<!-- ...
这样的东西时,当我将html写回文件时,lxml将尖括号修改为其html表示(&amp; lt;和&amp; gt;)。我尝试在字符串中转义它们('\&lt; ...'),但这似乎没有帮助。
查看大多数现代网站,看起来不需要那些评论标签。我可以删除它们,但是许多脚本也在其中使用了一些html,如果那些也被修改为HTML表示,那就是一个问题。
我很惊讶lxml正在修改这些数据,最后我听说HTML解析器旨在避免修改/解释&lt; script&gt;中的数据。标签
我可以使用设置/命令来防止这种情况发生吗?
由于
答案 0 :(得分:4)
将它们放入CDATA section。
答案 1 :(得分:0)
我刚刚发现的替代解决方案似乎也可以使用tostring()而不是write():
main = open('file.html', 'w')
main.write(lxml.html.tostring(htmlTree))
main.close()
而不是
htmlTree.write('file.html', pretty_print=False)
想想我也会在这里发布它,即使我决定使用CDATA,因为它似乎是一个更清晰的解决方案,可以防止将来使用其他解析脚本出现问题。