【发布时间】: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?
它快把我逼疯了。我找到了其他两个发布相同问题的用户的记录
我使用这篇文章(请参阅此行正下方的链接)重新安装和更新 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