使用Python保存GET调用的XML响应

2024-05-12 16:07:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用一个API创建一个实时报告,该API允许我获取所需的数据并以XML格式返回。我想知道的是,在收到响应后,如何将其保存到本地的.xml文件中?或者缓存它,这样我就可以在解析响应之前解析它。

import requests
r = requests.get('url',  auth=('user', 'pass'))

我用的是请求,因为这是我认为最简单的打GET电话的方法。另外,这是我的第一个问题,我刚刚开始学习Python,如果你们有点耐心的话,我会很感激的。谢谢。

我在考虑一个类似的问题,但是对于JSON,我不确定它是否能同样工作,https://stackoverflow.com/a/17519020/4821590

import requests
import json
solditems = requests.get('https://github.com/timeline.json') # (your url)
data = solditems.json()
with open('data.json', 'w') as f:
    json.dump(data, f)

Tags: 数据httpsimportcomapijsonurldata
2条回答

如果您想在处理返回的XML之前解析它,那么xml tree就是您的朋友。

import requests
import xml.etree.ElementTree as ET

r = requests.get('url',  auth=('user', 'pass'))
tree = ET.parse(r.text)
root = tree.getroot()

否则,正如jordanm所评论的,您只需将它保存到一个文件中,然后就可以使用它了。

with open('data.xml', 'w') as f:
    f.write(r.text)

与Python3(至少3.6个版本)相关的注释很少:

1)对请求使用xml.etree.ElementTree时,使用fromstring而不是parse。r、 文本返回字符串,xml.etree.ElementTree.parse用于文件

import requests
import xml.etree.ElementTree as ET

r = requests.get("https://xml.returning.uri")
root = ET.fromstring(r.text)

2)这将创建一个元素对象作为根(不再是树)。所以要写出来,你需要把它做成一棵树:

tree = ET.ElementTree(root)
tree.write("file.xml")

从文件中

xml.etree.ElementTree.parse(source, parser=None) Parses an XML section into an element tree. source is a filename or file object containing XML data.

xml.etree.ElementTree.fromstring(text) Parses an XML section from a string constant. Same as XML(). text is a string containing XML data. Returns an Element instance

相关问题 更多 >