在 Beautiful Soup 中找不到 lxml

Posted

技术标签:

【中文标题】在 Beautiful Soup 中找不到 lxml【英文标题】:lxml is not found within Beautiful Soup 【发布时间】: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?任何更多的帮助将不胜感激。到目前为止,谢谢你们! 【参考方案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每次写新程序还是需要安装的

【讨论】:

以上是关于在 Beautiful Soup 中找不到 lxml的主要内容,如果未能解决你的问题,请参考以下文章

Beautiful Soup 找不到我想要的 HTML 部分

如果对象也有其他类,Beautiful Soup 也找不到 CSS 类

Beautiful Stone Soup 在 XML 标记名称上区分大小写

Beautiful Soup 笔记 1基本使用

Beautiful Soup - 在 div 之后提取

python 之beautiful soup 4 warning