【问题标题】:lxml is not found within Beautiful Soup在 Beautiful Soup 中找不到 lxml
【发布时间】:2016-12-02 09:11:36
【问题描述】:

我正在尝试使用 beautifulsoup4 来解析一系列用 XHTML 编写的网页。我假设为了获得最佳结果,我应该与一个 xml 解析器配对,据我所知,beautifulsoup 支持的唯一一个是 lxml。

但是,当我尝试按照 beautifuloup 文档运行以下命令时:

import requests

from bs4 import BeautifulSoup 
r = requests.get(‘hereiswhereiputmyurl’)
soup = BeautifulSoup(r.content, ‘xml’)

它会导致以下错误:

FeatureNotFound: Couldn't find a tree builder with the features you    
requested: xml. Do you need to install a parser library?

它快把我逼疯了。我找到了其他两个发布相同问题的用户的记录

这里How to re-install lxml?

这里 bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?

我使用这篇文章(请参阅此行正下方的链接)重新安装和更新 lxml 并更新了美丽的汤,但我仍然收到错误消息。 Installing lxml, libxml2, libxslt on Windows 8.1

Beautifulsoup 工作正常,因为我运行了以下代码,它向我展示了它通常的标记语言墙 汤 = BeautifulSoup(r.content, 'html.parser')

这是我的规格 视窗 8.1 Python 3.5.2 我使用 Anaconda 3 中的 spyder ide 来运行我的代码(诚然,我对此了解不多)

我敢肯定初学者会这样做,因为正如我之前所说,我的编程经验很少。

我该如何解决这个问题,或者如果它是一个已知的错误,你们会建议我只使用 lxml 本身来抓取数据。

【问题讨论】:

  • 当你import lxml时会发生什么?
  • soup = BeautifulSoup(r.content, 'lxml') 怎么样?
  • 如果你知道 xpath 和/或 css,我会使用 lxml 而不是 bs4,但你的问题很可能是你已经为一个版本的 python 安装了 lxml,而你正在使用另一个版本。
  • 感谢您迄今为止的意见。到目前为止,我可以解决所有问题。 DeepSpace,当我自己导入 lxml 时,它可以正常导入,没有错误。 har07 - 我也尝试过那个,但我仍然得到与我原来的问题相同的结果...... Padraic Cunningham---有没有一种方法可以检查这个,因为我从 pip 安装了漂亮的汤然后我安装了lxml 使用我帖子中链接中的方法。
  • 我从上面的链接下载的 Lxml 文件是 lxml-3.6.1-cp35-cp35m-win_amd64.whl。这是唯一一个有效的,我假设 cp 指的是 python 3.5,但我可能是错的。这只是令人沮丧,因为这里还有其他关于此事的帖子,但还没有人能够找到解决方案。这是否意味着两年多来没有人能够使用 bs4 解析 XHTML?任何更多的帮助将不胜感激。到目前为止,谢谢你们!

标签: python-3.x beautifulsoup lxml anaconda


【解决方案1】:

我认为问题出在r.content。通常它给出响应的原始内容,不一定是HTML页面,可以是json等。
尝试将r.text 喂给汤。

soup = BeautifulSoup(r.text, ‘lxml’)

更好:

r.encoding='utf-8'

然后

page = r.text

soup = BeautifulSoup(page, 'lxml')

如果要解析xml,可以使用'lxml-xml'作为解析器。

【讨论】:

    【解决方案2】:

    这是一篇很老的帖子,但我今天遇到了这个问题并找到了解决方案。您需要安装 lxml。打开终端并输入

    pip3 install lxml
    

    现在重新启动开发环境(VS Code、Jupyter notebook 或其他),它应该可以工作了。

    【讨论】:

    • 或者干脆在顶部“import lxml”
    【解决方案3】:

    只需导入 lxml,然后使用解析器命令。 2021年如果用pip安装lxml,由于某种原因pycharm每次写新程序还是需要安装的

    【讨论】:

      猜你喜欢
      • 2013-07-15
      • 2020-08-08
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      相关资源
      最近更新 更多