【问题标题】:printing html entities using lxml in python在python中使用lxml打印html实体
【发布时间】:2015-02-05 01:15:13
【问题描述】:

我正在尝试使用 html 实体从下面的字符串中创建一个 div 元素。由于我的字符串包含 html 实体,因此 html 实体中的 & 保留字符在输出中被转义为 &。因此 html 实体显示为纯文本。如何避免这种情况,以便正确呈现 html 实体?

s = 'Actress Adamari López And Amgen Launch Spanish-Language Chemotherapy: Myths Or Facts™ Website And Resources'

div = etree.Element("div")
div.text = s

lxml.html.tostring(div)

output:
<div>Actress Adamari L&amp;#243;pez And Amgen Launch Spanish-Language Chemotherapy: Myths Or Facts&amp;#8482; Website And Resources</div>

【问题讨论】:

    标签: python html html-parsing lxml lxml.html


    【解决方案1】:

    您可以在调用tostring()时指定encoding

    >>> from lxml.html import fromstring, tostring
    >>> s = 'Actress Adamari L&#243;pez And Amgen Launch Spanish-Language Chemotherapy: Myths Or Facts&#8482; Website And Resources'
    >>> div = fromstring(s)
    >>> print tostring(div, encoding='unicode')
    <p>Actress Adamari López And Amgen Launch Spanish-Language Chemotherapy: Myths Or Facts™ Website And Resources</p>
    

    附带说明一下,您 should definitely use lxml.html.tostring() 在处理 HTML 数据时:

    请注意,您应该使用lxml.html.tostring 而不是lxml.tostringlxml.tostring(doc) 将返回文档的 XML 表示, 这不是有效的 HTML。特别是&lt;script src="..."&gt;&lt;/script&gt;之类的东西会被序列化为&lt;script src="..." /&gt;,完全迷惑浏览器。

    另见:

    【讨论】:

      猜你喜欢
      • 2016-05-10
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-17
      • 2021-11-14
      • 2012-05-07
      • 2013-01-01
      相关资源
      最近更新 更多