【问题标题】:lxml not being recognized in bs4: Python 3 on maclxml 在 bs4 中未被识别:Mac 上的 Python 3
【发布时间】:2018-10-11 03:54:45
【问题描述】:

所以,我在 High Sierra 上有一个 mac,我正在尝试导入和使用 api。这是 api 是一个 python3 api 并使用 bs4,特别是在 bs4 中使用 lxml 来解析网页。

但是,我在让 bs4 识别我的机器上安装了 lxml 时遇到了问题。我已经使用 pip 安装了它们,并且两者似乎都已正确安装。我可以编写一个顶部带有“import bs4”和“import lxml”的程序,它可以编译并运行得很好。但是,无论我做什么,当我使用这个 api 运行程序时,我总是会收到以下错误。

bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?

最重要的是,当我运行以下代码时

import lxml
import bs4
print(bs4.builder.builder_registry.builders)

输出是

[<class 'bs4.builder._htmlparser.HTMLParserTreeBuilder'>]

没有列出 lxml。

我已经尝试了在与此相关的各种堆栈溢出线程上找到的所有内容。我已经通过各种方法(pip、轻松安装、手动安装、自制软件)卸载并重新安装了 lxml 和 bs4。我已经从 brew 手动链接了 lxml。还有其他事情我可能忘记了。但是我不能让它工作。

任何人都有任何想法/以前有没有人经历过这个。可能我完全错过了一些小的或愚蠢的东西,因为我以前从来没有弄乱过 bs4,但我不知道。

【问题讨论】:

  • 你试过macports版本的lxml吗?

标签: python beautifulsoup installation lxml


【解决方案1】:

我不确定是什么原因,但我正在开发的 Flask 应用程序也遇到过类似的情况。我通过在需要它的函数中本地导入 bs4 来解决它。

我遇到的一个症状是,当我在模块顶部记录 bs4.builder.builder_registry.builders 时,日志最终显示了两个条目:首先使用正确的构建器,然后仅使用 HTML。

【讨论】:

    猜你喜欢
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 2019-04-19
    • 2015-08-05
    相关资源
    最近更新 更多