beautifulsoup 无法识别 lxml

Posted

技术标签:

【中文标题】beautifulsoup 无法识别 lxml【英文标题】:beautifulsoup won't recognize lxml 【发布时间】:2014-02-14 20:57:23 【问题描述】:

我正在尝试使用 lxml 作为 BeautifulSoup 的解析器,因为默认的解析器要慢得多,但是我收到了这个错误:

    soup = BeautifulSoup(html, "lxml")
  File "/home/rob/python/stock/local/lib/python2.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?

我已经多次卸载并重新安装了lxml以及beautifulsoup,但它仍然无法读取它。我也尝试过重新安装 lxml 依赖项,但我仍然得到这个。

我什至创建了一个新的虚拟环境并重新安装了所有内容,但仍然出现此错误。

有人知道这里发生了什么吗?

编辑

在 ubuntu 桌面上的 Python 2.7.x 上使用最新版本的 bs4 和 lxml

我可以import lxml 但我不能from lxml import etree 正在返回:

  File "<stdin>", line 1, in <module>
ImportError: /usr/lib/x86_64-linux-gnu/libxml2.so.2: version `LIBXML2_2.9.0' not found (required by /home/rob/python/stock/local/lib/python2.7/site-packages/lxml/etree.so)

我有 libxml,但我不确定版本,但我安装并重新安装了最新版本。也试过手动安装2.9.0还是什么都没有

【问题讨论】:

我假设您拥有最新版本的 bs4 和 lxml,以及相当新的 Python 2.7.x,对吧? (无论如何,不​​妨将版本号编辑到您的问题中。) 另外,您是否单独测试了lxml 以确保其正常工作? site-packages/bs4/builder/_lxml.py 存在吗? @abarnert yes.. 添加到问题中 @unutbu 是的。我认为这可能是 lxml 不起作用,检查我刚刚添加到底部的错误 【参考方案1】:

转到这些页面:

    https://pypi.python.org/pypi/cssselect

    https://pypi.python.org/pypi/lxml/3.2.5

下载两个包的源文件。将它们中的每一个展开到不同的文件夹中。然后在每个文件夹中找到 setup.py 文件并运行以下命令:

python setup.py install

您可能会在使用 lxml 时遇到一些问题。如果您收到类似

的错误
error: command 'gcc' failed with exit status 1

确保您使用安装 libxml2-dev 和 libxslt1-dev

sudo apt-get install libxml2-dev libxslt1-dev

希望这应该可行。

【讨论】:

【参考方案2】:

lxml 好像没有安装成功。要在 Ubuntu 上安装 lxml,请运行

sudo apt-get install libxslt1-dev libxml2

在虚拟环境中:

pip install --upgrade lxml
pip install cssselect

【讨论】:

我已经卸载并重新安装了至少 20 次 lxml。依然没有。还尝试安装依赖项,它说它们都已经安装了 再次卸载并重新安装 lxml 并发布您正在使用的命令可能会有所帮助。 刚刚做了pip uninstall lxml -> pip install --upgrade lxml 返回了Successfully installed lxml Cleaning up... 并且仍然得到同样的错误 libxml2 是如何安装的?我的,在 Ubuntu 上是 /usr/lib/libxml2.so.2。出于某种原因,您正在/usr/lib/x86_64-linux-gnu/libxml2.so.2 中寻找它。 不确定。我怎样才能卸载并重新安装它?我可以使用 lxml OFF virtualenv,但它只在 virtualenv 中给出错误。好困惑

以上是关于beautifulsoup 无法识别 lxml的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python Scraping 中使用 beautifulsoup 和 selenium 识别类名或 id

Beautifulsoup4 - 通过强标记值识别信息仅适用于标记的某些值

如何识别beautifulsoup返回的'p'标签中是否存在'span'子标签?

无法在python中导入beautifulsoup

无法使用 Beautifulsoup 从网站读取表格

为什么BeautifulSoup无法解析页面的所有元素? (答案:BeautifulSoup中的CSS选择器)