mac os 上的 lxml 无法解析包含 emoji 的 html?

作者站长头像
站长
· 阅读数 26

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

回复
1个回答
avatar
test
2024-06-21

官方已经把问题已经解决了

https://bugs.launchpad.net/lxml/+bug/2046208

把 lxml 升级到 >=5.0.1 就行了

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容