使用 Python 保存来自 GET 调用的 XML 响应
Save XML response from GET call using Python
我正在尝试使用 API 创建一个实时报告,它允许我获取我需要的数据并 returns 以 XML 格式。我想知道的是,收到响应后,如何将其保存到本地的 .xml 文件中?或者缓存它,这样我就可以在解析响应之前解析它。
import requests
r = requests.get('url', auth=('user', 'pass'))
我正在使用请求,因为在我看来这是进行 GET 调用的最简单方法。另外,这是我的第一个问题,我才刚刚开始学习Python,如果你们有一点耐心,我将不胜感激。谢谢。
我在看一个类似的问题,但对于 JSON,不确定它是否会同样有效,
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)
如果您希望能够在处理返回的 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 而不是解析。 r.text returns 一个字符串,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
我正在尝试使用 API 创建一个实时报告,它允许我获取我需要的数据并 returns 以 XML 格式。我想知道的是,收到响应后,如何将其保存到本地的 .xml 文件中?或者缓存它,这样我就可以在解析响应之前解析它。
import requests
r = requests.get('url', auth=('user', 'pass'))
我正在使用请求,因为在我看来这是进行 GET 调用的最简单方法。另外,这是我的第一个问题,我才刚刚开始学习Python,如果你们有一点耐心,我将不胜感激。谢谢。
我在看一个类似的问题,但对于 JSON,不确定它是否会同样有效,
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)
如果您希望能够在处理返回的 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 而不是解析。 r.text returns 一个字符串,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