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

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


当前回答

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

pip install bs4
pip install html5lib
pip install lxml

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

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

其他回答

空白参数将导致最佳可用的警告。 soup = BeautifulSoup(html)

---------------/UserWarning:没有显式指定解析器,因此我正在使用此系统的最佳可用HTML解析器(“html5lib”)。这通常不是问题,但如果您在另一个系统或不同的虚拟环境中运行这段代码,它可能使用不同的解析器并表现不同。----------------------/

python 3.7.7

PyCharm 19.3.4 CE

实际上是其他作品中提到的三个选项。

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

# 2. 
pip install lxml
soup_object= BeautifulSoup(markup,'lxml') # C dependent parser 

# 3.
pip install html5lib
soup_object= BeautifulSoup(markup,'html5lib') # C dependent parser 

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

pip install --upgrade bs4

其次,我使用了:

html.parser

而不是

html5lib

不要使用lxml,而是使用html。解析器,你可以使用这段代码:

soup = BeautifulSoup(html, 'html.parser')

在python环境中安装LXML解析器。

pip install lxml

你的问题会解决的。你也可以使用内置的python包:

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

注意:“HTMLParser”模块已被重命名为“html”。在Python3中