【问题标题】:Prevent lxml from touching data in <script> tags防止 lxml 触摸 <script> 标签中的数据
【发布时间】:2011-09-16 14:05:36
【问题描述】:

我正在尝试编写一个 python 脚本来修改我正在解析的文件中

<script>
<!--
...
-->
</script>

问题是当我尝试类似scriptNode.text = '&lt;!-- ... lxml 之类的东西时,当我将 html 写回文件时,它会将尖括号修改为它们的 html 表示形式(& lt; 和 & gt;)。我尝试在字符串 ('\

查看大多数现代网站,似乎不需要那些评论标签。我可以删除它们,但许多脚本也在其中使用了一些 html,如果这些脚本也被修改为它们的 HTML 表示,那就是个问题。

我很惊讶 lxml 正在修改这些数据,最后我听说 HTML 解析器旨在避免修改/解释

我可以使用设置/命令来防止这种情况发生吗?

谢谢

【问题讨论】:

  • 您不应该将 HTML 注释放在脚本标签内,这可能是您问题的根源。
  • @mikerobi:这不是主要问题,我还提到这会影响脚本中的其他变量,例如var somearg = '&amp;lt;h3&amp;gt;test&amp;lt;/h3&amp;gt;' 变为var somearg = '&amp;lt;h3&amp;gt;test&amp;lt;/h3&amp;gt;'

标签: python html-parsing lxml


【解决方案1】:

将它们放入CDATA section

【讨论】:

    【解决方案2】:

    我刚刚发现的另一种似乎也有效的解决方案是使用 tostring() 而不是 write():

    main = open('file.html', 'w')
    main.write(lxml.html.tostring(htmlTree))
    main.close()
    

    而不是

    htmlTree.write('file.html', pretty_print=False)
    

    我想我也会在这里发布它,尽管我决定使用 CDATA,因为它似乎是一个更简洁的解决方案,可以防止将来与其他解析脚本出现问题。

    【讨论】:

      猜你喜欢
      • 2015-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      • 2020-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多