You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从lxml的HtmlElement获取未解析转义的原始文本?

解决lxml提取原始转义文本的问题

方法一:解析后重新转义文本

lxml默认会自动解析HTML实体,直接获取text得到的是解析后的字符。可以用Python标准库的html.escape()将解析后的字符转义回原始实体格式:

import html
from lxml import html as lxml_html

thing = lxml_html.fromstring("<code>&amp;lt;div&amp;gt;</code>")
original_text = html.escape(thing.text)
print(original_text)  # 输出:&amp;lt;div&amp;gt;

方法二:解析时禁用实体解析

创建HTML解析器时设置resolve_entities=False,让lxml保留原始的实体字符串,无需后续转义操作:

from lxml import html
from lxml.etree import HTMLParser

parser = HTMLParser(resolve_entities=False)
thing = html.fromstring("<code>&amp;lt;div&amp;gt;</code>", parser=parser)
print(thing.text)  # 输出:&amp;lt;div&amp;gt;

补充:处理tostring的标签问题(不推荐)

如果一定要使用tostring,可以通过字符串处理去掉首尾的<code>标签,但这种方法不够健壮(比如标签带有属性时会失效):

from lxml import html

thing = html.fromstring("<code>&amp;lt;div&amp;gt;</code>")
raw_content = html.tostring(thing, encoding='unicode').strip('<code></code>')
print(raw_content)  # 输出:&amp;lt;div&amp;gt;

内容的提问来源于stack exchange,提问作者erobson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 16:30:46