...
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”。 点击“可用软件包”窗口左下方的“安装软件包”。

其他回答

我使用的是Python 3.6,在这篇文章中我有同样的原始错误。在我运行命令后:

python3 -m pip install lxml

它解决了我的问题

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

# 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安装lxml,然后将xml保存在soup = BeautifulSoup(URL, "xml")在Mac上完成了这项工作。

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

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

我也遇到过同样的问题。我发现原因是我有一个稍微过时的python 6包。

>>> import html5lib
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/html5lib/__init__.py", line 16, in <module>
    from .html5parser import HTMLParser, parse, parseFragment
  File "/usr/local/lib/python2.7/site-packages/html5lib/html5parser.py", line 2, in <module>
    from six import with_metaclass, viewkeys, PY3
ImportError: cannot import name viewkeys

升级你的六个软件包将解决这个问题:

sudo pip install six=1.10.0