2014-01-24 136 views
10

我试图用lxml的解析器BeautifulSoup因为默认的要慢得多,但是我得到这个错误:beautifulsoup不会承认LXML

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以及作为美丽的许多次,但它仍然不会阅读它。我试过重新安装lxml依赖关系,我仍然得到这个。

我甚至做了一个新的虚拟环境,并安装了新鲜的东西,仍然得到这个错误。

任何人都知道这里发生了什么?

编辑

使用BS4和LXML关于Python 2.7.x的最新版本的Ubuntu桌面上

我可以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) 

我有然而,我不确定版本,但我安装并重新安装了最新版本。还试图手动安装2.9.0,但仍然没有任何东西

+0

我假设你有最新版本的bs4和lxml,以及相当新的Python 2.7.x,对不对? (不管怎样编辑你的问题的版本号。) – abarnert

+0

另外,你测试'lxml'本身以确保它的工作? – abarnert

+0

'site-packages/bs4/builder/_lxml.py'是否存在? – unutbu

回答

7

它看起来像lxml尚未成功安装。要在Ubuntu上安装lxml,运行

sudo apt-get install libxslt1-dev libxml2 

在的virtualenv:

pip install --upgrade lxml 
pip install cssselect 
+0

我已卸载并重新安装lxml至少20次。依然没有。也尝试安装依赖关系,它说他们都已经安装 – robz228

+0

还依赖返回'已经是最新版本' – robz228

+0

它可能有助于卸载并重新安装lxml一次,并发布您正在使用的命令。 – unutbu

1

转到这些页面:

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

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

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

python setup.py install 

你可能会遇到一些问题LXML。如果你得到

error: command 'gcc' failed with exit status 1 

错误请确保您使用

sudo apt-get install libxml2-dev libxslt1-dev 

希望这应该工作的libxml2安装-dev的& libxslt1-dev的。