...
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脚本中,我包含了这一行: 导入comparePages 在pageCrawler文件中,我包含了以下两行代码: 从bs4导入BeautifulSoup 从urllib2导入urlopen

任何帮助找出问题是什么以及如何解决都将不胜感激。


当前回答

我在pycharm中使用python 3.8。我假设您在开始工作之前没有安装“lxml”。这就是我所做的:


进入“文件->设置” 在左侧设置菜单栏选择“Python解释器”,选择“Python解释器”。 单击包列表上的“+”图标。 搜索“lxml”。 点击“可用软件包”窗口左下方的“安装软件包”。

其他回答

尽管BeautifulSoup默认支持HTML解析器 如果您想使用任何其他第三方Python解析器,则需要安装该外部解析器,如(lxml)。

soup_object= BeautifulSoup(markup, "html.parser") #Python HTML parser

但是如果你没有指定任何解析器作为参数,你会得到一个没有指定解析器的警告。

soup_object= BeautifulSoup(markup) #Warnning

要使用任何其他外部解析器,您需要安装它,然后需要指定它。就像

pip install lxml

soup_object= BeautifulSoup(markup, 'lxml') # C dependent parser 

外部解析器依赖于c和python,这可能有一些优点和缺点。

我更喜欢内置的python html解析器,没有安装没有依赖

soup = BeautifulSoup(s, “html.parser”)

出现错误是因为您使用的解析器。一般来说,如果你有HTML文件/代码,那么你需要使用html5lib(文档可以在这里找到)&如果你有XML文件/数据,那么你需要使用lxml(文档可以在这里找到)。你也可以使用lxml的HTML文件/代码,但有时它会给出一个错误如上所示。因此,最好根据数据/文件的类型明智地选择包。你也可以使用内置模块html_parser。但是,这有时也不起作用。

有关何时使用哪个包的详细信息,您可以在这里查看详细信息

运行这三个命令来确保你已经安装了所有相关的软件包:

pip install bs4
pip install html5lib
pip install lxml

然后,如果需要,重新启动您的Python IDE。

这样就可以解决所有与这个问题有关的问题了。

这个方法对我很有效。我想说的是,我是在虚拟环境中尝试这个方法的。第一:

pip install --upgrade bs4

其次,我使用了:

html.parser

而不是

html5lib