在 Beautiful Soup 中找不到 lxml

Kev*_*vin 6 lxml beautifulsoup python-3.x anaconda

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

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

import requests

from bs4 import BeautifulSoup 
r = requests.get(‘hereiswhereiputmyurl’)
soup = BeautifulSoup(r.content, ‘xml’)
Run Code Online (Sandbox Code Playgroud)

它导致以下错误:

FeatureNotFound: Couldn't find a tree builder with the features you    
requested: xml. Do you need to install a parser library?
Run Code Online (Sandbox Code Playgroud)

这让我疯狂。我找到了其他两个发布相同问题的用户的记录

这里如何重新安装lxml?

在这里 bs4.FeatureNotFound:找不到具有您请求的功能的树构建器:lxml。你需要安装解析器库吗?

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

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

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

我确信初学者会这样做,因为正如我之前所说,我几乎没有编程经验。

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

Kaa*_* E. 1

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

\n\n
soup = BeautifulSoup(r.text, \xe2\x80\x98lxml\xe2\x80\x99)\n
Run Code Online (Sandbox Code Playgroud)\n\n

更好的:

\n\n
r.encoding='utf-8'\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后

\n\n
page = r.text\n\nsoup = BeautifulSoup(page, 'lxml')\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n