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

2024-04-26 00:32:35 发布

您现在位置:Python中文网/ 问答频道 /正文

...
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?

上面的输出在我的终端上。我在MacOS10.7.x上,我有Python2.7.1,然后跟着this tutorial得到漂亮的Soup和lxml,这两个版本都安装成功,并且可以使用单独的测试文件located here。在导致此错误的Python脚本中,我包含了这一行: from pageCrawler import comparePages 在pageCrawler文件中,我包含了以下两行: from bs4 import BeautifulSoupfrom urllib2 import urlopen

如果您能帮助我们找出问题所在以及解决方法,我们将不胜感激。


Tags: 文件fromimportyouinithtmllibrarysite
3条回答

我更喜欢内置python html解析器,不安装不依赖项

soup = BeautifulSoup(s, "html.parser")

我怀疑这与BS用来读取HTML的解析器有关。他们document is here,但是如果你和我一样(在OSX上),你可能会被一些需要做点工作的事情困住:

您会注意到,在上面的BS4文档页面中,他们指出,默认情况下,BS4将使用Python内置的HTML解析器。假设您在OSX中,Apple捆绑的Python版本是2.7.2,这对字符格式不太宽容。我遇到了同样的问题,所以我升级了我的Python版本来解决这个问题。在virtualenv中这样做将最小化对其他项目的干扰。

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

pip install lxml

然后尝试:

soup = BeautifulSoup(html, "lxml")

根据你的情况,这可能已经足够好了。我觉得这已经够烦人了,需要升级我的Python版本。使用virtualenv,you can migrate your packages相当容易。

对于安装了bs4的基本开箱即用python,您可以使用

soup = BeautifulSoup(html, "html5lib")

如果您想使用格式化程序formatter='xml',则需要

pip3 install lxml

soup = BeautifulSoup(html, features="xml")

相关问题 更多 >