当前位置: 首页 > 知识库问答 >
问题:

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

堵琨
2024-02-18

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 etreefrom mark import BASE_DIRwith 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 etreefrom mark import BASE_DIRwith 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 版本可以复现

类似的问题如下,但是也没人管

  • https://bugs.launchpad.net/lxml/+bug/1981134
  • https://bugs.launchpad.net/lxml/+bug/1949271

针对这个问题,我也去提了一个 bug,不知道会不会有回音:https://bugs.launchpad.net/lxml/+bug/2046208

共有1个答案

司寇阳朔
2024-02-18

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

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

把 lxml 升级到 >=5.0.1 就行了

 类似资料:
  • 我在项目中使用iBeacons,需要从广告数据中提取主要、次要、UUID、txPower和信标类型的值。 我从CBCentralManagerDelegate获取广告数据: 然后我得到主要,次要,uuid和txPower值: 但我如何才能得到信标类型?(iBeacon规范中的0x02和0x15值) 更新:我在Obj-C中找到了下一个用于确定信标类型的函数 但它在Swift中不起作用。

  • 问题内容: 因此,我有一个主要的JSP索引页面“ index.jsp”,其中包含多个内容。就像是, “ include.jsp”包含字符串“ String basePath = request.getContextPath();”。 “ navbar.jsp”使用“ basePath”,但是Eclipse在使用“ basePath”和“ basePath无法解析”消息的“ navbar.jsp”的

  • Android Studio内联编译器显示红色错误,但使用gradle编译效果良好。Android Studio将语法标记为错误,但gradle编译 通过编辑和升级Gradle版本后,我的项目中断了。但是我可以在虚拟设备上运行它而不会出错。 最初我想让新遗迹工作,这需要新版本的gradle。这引起了更大的问题。你能帮我找到解决方案吗? 我想我明白了。我创建了一个新项目,只复制了旧项目的java源文

  • 本文向大家介绍Python中的html5lib和lxml解析器,包括了Python中的html5lib和lxml解析器的使用技巧和注意事项,需要的朋友参考一下 html5lib是用于解析HTML的纯Python库。它被设计为符合WHATWG HTML规范,所有主要的Web浏览器都实现了该规范。它可以解析HTML文档的几乎所有元素,将其分解为不同的标记和片段,可以针对各种用例将其过滤掉。它以与主要浏

  • 使用5.4.1,Gradle能够解决表单的依赖关系: 依赖项工件存储在jFrog artifactory的以下位置: 如果我将包装升级到6.5,Gradle将无法再解决依赖关系。如果设置完全在我的控制之下,我会将工件移动到: and be on my merry way.不幸的是,它不是,所以我不能。有没有一种直接的方法可以在我的项目中解决它,而不改变artiFactory中的结构?我正在使用ma

  • 问题内容: 我正在尝试使用具有库重复键的无效结构解析json 。如果json中有重复的键,我想将它们提取为。 我要解析的示例(我要解析的实际json来自json导出): 但是,由于此json具有重复键,因此仅保留了最后一个值: 我也试过了具有支持的模块,但是它不能像预期的那样用于嵌套json对象。 将Guava模块用于之前显示的json的示例: 我应该如何使用库解决此问题?是否还有其他支持Java