LXML不能解析包含特定unicode字符的HTML片段



lxml无法解析任何包含字符

下面的python代码无法通过xpath找到html元素。此外,etree.tostring(root)的结果包含许多额外的空白。

代码:

from lxml import html, etree
text = """<div id="content">
𝐱
</div>
"""
root  = html.document_fromstring(text)
print(etree.tostring(root))
content = root.xpath("//div[@id='content']")
print(content)

输出:

b'<html><body><p>d   i   v       i   d   =   "   c   o   n   t   e   n   t   "   &gt;   n           1x14/p></body></html>'
[]

更新:我认为这是由于一个lxml错误。它已在lxml 4.4.3中修复。然而,在检查了lxml的变更日志&在4.4.2-4.4.3之间的提交历史,我仍然不知道根本原因。

下面基于ElementTree的工作解决方案

import xml.etree.ElementTree as ET
parser = ET.XMLParser()
parser.entity["#119857"] = 'x'
html = '''<html><body><p><div id='content'>&#119857;</div></p></body></html>'''
root = ET.fromstring(html)
content = root.find('.//div[@id="content"]')
print(content.text)

输出x

最新更新