解析 HTML 内容时阻止 etree 解析 HTML 实体

Posted

技术标签:

【中文标题】解析 HTML 内容时阻止 etree 解析 HTML 实体【英文标题】:Preventing etree from resolving HTML entities when parsing HTML contents 【发布时间】:2014-04-11 09:32:43 【问题描述】:

在解析 html 内容时,有什么方法可以阻止 etree 解析 HTML 实体?

html = etree.HTML('<html><body>&amp;</body></html>')
html.find('.//body').text

这给了我 '&' 但我想得到 '&'自己。

【问题讨论】:

一种选择/解决方法是使用cgi.escape 处理正文文本,请参阅***.com/questions/1061697/…。 【参考方案1】:

您始终可以预先/后处理您的数据。 在提供给 HTML 解析器之前将 '&' 替换为 u'\xfe' 并在输出时将 u'\xfe' 替换为 '&'。

from lxml import etree
html = etree.HTML('<html><body>&amp;</body></html>'.replace('&',u'\xfe'))
html.find('.//body').text.replace(u'\xfe','&')
u'&amp;'

【讨论】:

以上是关于解析 HTML 内容时阻止 etree 解析 HTML 实体的主要内容,如果未能解决你的问题,请参考以下文章

xpath解析

python解析xml文件之xml.etree.cElementTree和xml.etree.ElementTree区别

数据解析之Xpath解析

对象解析

三种数据解析方式

python xml解析之 xml.etree.ElementTree