bs4.FeatureNotFound:找不到具有您请求的功能的树生成器:lxml。您需要安装解析器库吗?

新手上路,请多包涵
...
soup = BeautifulSoup(html, "lxml")
File "/Library/Python/2.7/site-packages/bs4/__init__.py", line 152, in __init__
% ",".join(features))
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?

我的终端上的上述输出。我在 Mac OS 10.7.x 上。我有 Python 2.7.1,并按照 本教程 获取 Beautiful Soup 和 lxml,它们都成功安装并使用 位于此处 的单独测试文件。在导致此错误的 Python 脚本中,我包含了这一行: from pageCrawler import comparePages 在 pageCrawler 文件中,我包含了以下两行: from bs4 import BeautifulSoup from urllib2 import urlopen

对于找出问题所在以及如何解决问题的任何帮助将不胜感激。

原文由 user3773048 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 848
1 个回答

我怀疑这与 BS 将用来读取 HTML 的解析器有关。他们 的文档在这里,但如果你像我一样(在 OSX 上),你可能会遇到一些需要一些工作的东西:

您会注意到在上面的 BS4 文档页面中,他们指出默认情况下 BS4 将使用 Python 内置的 HTML 解析器。假设您在 OSX 中,Apple 捆绑的 Python 版本是 2.7.2,它对字符格式设置并不宽松。我遇到了同样的问题,所以我升级了我的 Python 版本来解决它。在 virtualenv 中执行此操作将最大限度地减少对其他项目的干扰。

如果这样做听起来很痛苦,您可以切换到 LXML 解析器:

 pip install lxml

然后尝试:

 soup = BeautifulSoup(html, "lxml")

根据您的情况,这可能就足够了。我发现这很烦人,需要升级我的 Python 版本。使用 virtualenv, 您可以相当轻松地迁移您的包

原文由 James Errico 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏