【发布时间】:2021-06-19 09:36:20
【问题描述】:
我对编程很陌生,但已经获得了一些经验。现在,我正试图从返回流式 XML 数据的 API 中消费数据,当事件发生时,API 将流式传输完整的 <event></event> 元素,请参见下面的示例。
如果没有事件发生,API 还会每 30 秒发送一次<hearbeat></heartbeat> 事件。
import requests
from requests.auth import HTTPBasicAuth
r = requests.get(url2, auth=auth, verify=False, stream=True)
for line in r.iter_lines():
if line:
dec = line.decode("utf-8")
print(f"line: {dec}")
Output:
line: <event id="4311" name="ExtractME" type="log" timestamp="1616433400000">
line: <argument value="cu" type="log" id="1"/>
line: <argument value="ExtractMe" type="dc" id="1" logid="516798654936147>
line: </argument>
line: <argument value="" type="dc" id="1"/>
line: </event>
在此处的事件日志中,我已将要获取的数据的值更改为 ExtractMe。有什么想法吗?
我正在使用这个例子; https://requests.readthedocs.io/en/master/user/advanced/#streaming-requests
【问题讨论】:
-
欢迎来到 Stack Overflow。你的问题是什么?有什么不工作吗?
-
您好,谢谢!是的,我如何将我用 ExtractMe 替换的值放入单个字典中,然后将该字典发送到我的应用程序的其余部分?由于事件在一行中出现,我正在努力解决如何提取它
-
您使用Python's XML-handling abilities 将XML 解析为数据结构。
-
是的,我将它用于项目的其他部分。但在这种情况下,我从 API 获取事件日志 - 并且 API 正在流式传输。每次发生事件时,我都会在上面的示例中得到响应,并在 request.iter_lines() 中逐行获取它,问题是我不明白如何将其转换为 python 可以使用 xml.etree 或其他东西处理的东西。当 API 流式传输事件时,我认为我没有得到完整的 XML 数据结构
-
我没有为每个事件创建一个新请求,我连接到 API 一次,它会在事件发生时发送连续的数据流,如上例所示
标签: python xml api python-requests streaming