Python bs4.FeatureNotFound:无法';t找不到具有您请求的功能的树生成器:lxml。您需要安装解析器库吗?

Python bs4.FeatureNotFound:无法';t找不到具有您请求的功能的树生成器:lxml。您需要安装解析器库吗?,python,python-2.7,beautifulsoup,lxml,Python,Python 2.7,Beautifulsoup,Lxml,以上输出在我的终端上。我使用的是Mac OS 10.7.x。我有Python2.7.1,随后得到了Beauty Soup和lxml,它们都成功安装并使用单独的测试文件。在导致此错误的Python脚本中,我包含了这一行: 从页面爬虫导入比较页面 在pageCrawler文件中,我包含了以下两行: 来自bs4导入美化组 从urllib2导入urlopen 如果您能帮助我们找出问题所在以及如何解决问题,我们将不胜感激。我怀疑这与BS将用于读取HTML的解析器有关。但是如果你像我一样(在OSX上),你可

以上输出在我的终端上。我使用的是Mac OS 10.7.x。我有Python2.7.1,随后得到了Beauty Soup和lxml,它们都成功安装并使用单独的测试文件。在导致此错误的Python脚本中,我包含了这一行:
从页面爬虫导入比较页面
在pageCrawler文件中,我包含了以下两行:
来自bs4导入美化组
从urllib2导入urlopen


如果您能帮助我们找出问题所在以及如何解决问题,我们将不胜感激。

我怀疑这与BS将用于读取HTML的解析器有关。但是如果你像我一样(在OSX上),你可能会被一些需要做一些工作的东西困住:

您会注意到,在上面的BS4文档页面中,他们指出默认情况下BS4将使用Python内置HTML解析器。假设您使用的是OSX,Apple捆绑版的Python是2.7.2,这对于字符格式来说并不宽松。我遇到了同样的问题,所以我升级了Python版本来解决这个问题。在virtualenv中这样做将最大限度地减少对其他项目的干扰

如果这样做听起来很痛苦,您可以切换到LXML解析器:

...
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?
然后尝试:

pip install lxml

根据您的场景,这可能足够好了。我觉得这很烦人,因此有必要升级我的Python版本。使用virtualenv非常容易。

对于安装了bs4的基本现成python,您可以使用

soup = BeautifulSoup(html, "lxml")
但是,如果您想使用formatter='xml',则需要

soup = BeautifulSoup(html, "html5lib")

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

pip3 install lxml

soup = BeautifulSoup(html, features="xml")

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


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

我使用的是Python3.6,我在这篇文章中遇到了相同的原始错误。运行命令后:

sudo pip install six=1.10.0

它解决了我的问题

您可以使用以下代码,而不是使用lxml use html.parser:

python3 -m pip install lxml

虽然默认情况下BeautifulSoup支持HTML解析器 如果您想使用任何其他第三方Python解析器,您需要安装外部解析器,如(lxml)

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

soup_object= BeautifulSoup(markup,"html.parser") #Python HTML parser
要使用任何其他外部解析器,您需要安装它,然后需要指定它。像

soup_object= BeautifulSoup(markup) #Warnning

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

在一些参考文献中,使用第二个而不是第一个:

pip install lxml

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

由于您正在使用的解析器,导致出现错误。通常,如果您有HTML文件/代码,则需要使用
html5lib
(可以找到文档)&如果您有XML文件/数据,则需要使用
lxml
(可以找到文档)。您也可以对HTML文件/代码使用
lxml
,但有时会出现如上所述的错误。因此,最好根据数据/文件的类型明智地选择包。您还可以使用内置模块
html\u解析器
。但是,这有时也不起作用


有关何时使用哪个软件包的详细信息,请查看详细信息运行以下三个命令以确保已安装所有相关软件包:

soup_object= BeautifulSoup(markup,'html-parser')
soup_object= BeautifulSoup(markup,'html.parser')
然后重新启动Python IDE(如果需要)


这将解决与此问题相关的任何问题。

空白参数将导致警告,以获得最佳可用性。
soup=BeautifulSoup(html)

---------------/UserWarning:没有明确指定语法分析器,所以我使用了这个系统最好的HTML语法分析器(“html5lib”)。这通常不是问题,但如果您在另一个系统上或在不同的虚拟环境中运行此代码,它可能会使用不同的解析器并表现出不同的行为----------------------/

python——python 3.7.7版


PyCharm 19.3.4 CE

在python环境中安装LXML解析器

pip install bs4
pip install html5lib
pip install lxml
你的问题会解决的。您还可以使用内置python包进行以下操作:

pip install lxml

注意:Python3中的“HTMLParser”模块已重命名为“html.parser”,实际上是其他工作中提到的3个选项

一,


  • 查看此答案-
    html
    是url还是html内容的链接?
    sudo pip install six==1.10.0
    您应该在回答中提供更多详细信息
    vendor.bs.bs4.FeatureNotFound:找不到具有所需功能的树生成器:html.parser。是否需要安装解析器库?
    在pip安装后进行测试:
    python-c'导入请求;来自bs4进口美联;r=请求。获取(“https://www.allrecipes.com/recipes/96/salad/") ; soup=beautifulsou(r.text,“lxml”)
    在我的虚拟环境中,我需要安装
    请求
    bs4
    lxml
    ,然后
    beautifulsou
    才能解析我的网页内容。Uff!疯狂的Mac,我不知道我什么时候才能停止后悔我买Mac的决定!第一次运行lxml时,我在脚本中添加了一行
    import lxml
    ,然后在Docker中安装了
    apt将python lxml
    安装到一个新组建的远程服务器上,html5lib对我来说不是现成的。我仍然必须执行
    pip安装html5lib
    ,之后一切正常。对我来说不起作用:
    bs4.FeatureNotFound:找不到具有您请求的功能的树生成器:html5lib。您需要安装解析器库吗?
    如果我将其更改为
    html。解析器
    可以工作,这就是实际的解决方案。虽然此答案不能直接回答问题,但它确实提供了一个更好的替代方案。我不喜欢xlml,我把所有的东西都改成了html.parser,它成功了。我
    pip install bs4
    pip install html5lib
    pip install lxml
    
    pip install lxml
    
    soup = BeautifulSoup(s,  "html.parser")
    
    soup_object= BeautifulSoup(markup,"html.parser") #Python HTML parser
    
    pip install lxml
    
    soup_object= BeautifulSoup(markup,'lxml') # C dependent parser 
    
    pip install html5lib
    
    soup_object= BeautifulSoup(markup,'html5lib') # C dependent parser