132

我非常喜欢这个requests包及其处理 JSON 响应的舒适方式。

不幸的是,我不明白我是否也可以处理 XML 响应。有没有人体验过如何使用requests包处理 XML 响应?是否需要包含另一个用于 XML 解码的包?

4

2 回答 2

221

requests不处理解析 XML 响应,不。XML 响应本质上比 JSON 响应复杂得多,如何将 XML 数据序列化为 Python 结构几乎没有那么简单。

Python 带有内置的 XML 解析器。我建议您使用ElementTree API

import requests
from xml.etree import ElementTree

response = requests.get(url)

tree = ElementTree.fromstring(response.content)

或者,如果响应特别大,则使用增量方法:

response = requests.get(url, stream=True)

# if the server sent a Gzip or Deflate compressed response, decompress
# as we read the raw stream:
response.raw.decode_content = True

events = ElementTree.iterparse(response.raw)

for event, elem in events:
    # do something with `elem`

外部lxml 项目建立在相同的 API 上,为您提供更多功能和功能。

于 2013-08-19T07:33:55.140 回答
17

一个更简单的方法是dict使用xmltodict包将 XML 转换为

response = requests.get('http://blabla.com')
dict_data = xmltodict.parse(response.content)

现在,dict_data它只是一个 Python 字典。

您可以使用 pip 安装它:pip install xmltodict

于 2021-04-28T07:54:44.703 回答