所以,我在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。
我已经尝试了在与此相关的各种堆栈溢出线程上找到的所有内容。我已经通过各种方法卸载并重新安装了lxml和bs4(pip,easy install,manual installation,homebrew)。我从brew手动链接了lxml。还有其他事情我可能已经忘记了。但是我无法让它发挥作用。
任何人都有任何想法/之前有人经历过这个。它可能我完全错过了一些小或愚蠢的东西,因为我之前从未搞过bs4,但我不知道。
答案 0 :(得分:0)
我不确定是什么原因,但是我正在开发的Flask应用程序也遇到了类似的情况。我通过在需要的函数中本地导入bs4
来解决此问题。
我遇到的一个症状是,我在模块顶部登录了bs4.builder.builder_registry.builders
时,日志最终显示了两个条目:首先是使用适当的构建器,然后是HTML。