防止etree在解析HTML内容时解析HTML实体

3 投票
1 回答
536 浏览
提问于 2025-04-17 21:22

有没有办法让etree在解析HTML内容时,不去处理HTML实体呢?

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

这样我得到的是'&',但我想要的是'&amp;'本身。

1 个回答

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;'

撰写回答