在 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 类