mac os 上的 lxml 无法解析包含 emoji 的 html
<html>
<head>
<title>随机 Emoji 示例</title>
</head>
<body>
<p id="emojiParagraph">😄 这是一个带有随机 Emoji 的段落: </p>
</body>
</html>
对于上面带有 emoji 的 html,lxml 会返回 None
from lxml import etree
from mark import BASE_DIR
with open(BASE_DIR/'123.html', 'r', encoding='utf-8') as file:
dom = etree.HTML(file.read())
print(dom)
输出如下:
None
如果我删除 emoji
<html>
<head>
<title>随机 Emoji 示例</title>
</head>
<body>
<p id="emojiParagraph"> 这是一个带有随机 Emoji 的段落: </p>
</body>
</html>
继续使用同样的代码
from lxml import etree
from mark import BASE_DIR
with open(BASE_DIR/'123.html', 'r', encoding='utf-8') as file:
dom = etree.HTML(file.read())
print(dom)
输出如下:
<Element html at 0x102d05a80>
所以,问题在于 lxml 无法解析带有 emoji 的网页,这个问题在 liunx 上无法复现
这个问题在 macos 上的任意 python 版本可以复现
这个问题在 macos 上的任意 lxml 版本可以复现
类似的问题如下,但是也没人管
针对这个问题,我也去提了一个 bug,不知道会不会有回音:https://bugs.launchpad.net/lxml/+bug/2046208
官方已经把问题已经解决了
https://bugs.launchpad.net/lxml/+bug/2046208
把 lxml 升级到 >=5.0.1 就行了