使用python和request从属性dispatchState获取XML值

时间:2019-05-30 02:49:00

标签: python python-3.x splunk splunk-sdk

我正在使用以下方法请求工作拼凑:

 response = requests.post('https://xxxx.net:8089/services/search/jobs/' + job_id, auth=(splunk_user, splunk_pass), verify=False)

现在,我使用print(response.text)查看输出。我希望能够仅打印<s:key name="dispatchState">DONE</s:key>的值,看看它是“ DONE”还是其他值。

1 个答案:

答案 0 :(得分:0)

解决方案1 ​​

由于输出格式为xml,因此您可以使用python的lxml模块来解析xml,如下所示。

import lxml.etree as et
root = et.fromstring(response.text)
done_state = root.xpath("//s:key[@name='dispatchState']/text()", root.nsmap)[0]

您可以使用pip安装lxml

pip install lxml

您可以找到更多的文档和教程here

解决方案2

如果结构是常量,则可以使用简单的正则表达式来获取所需的信息:

import re
match = re.search('<s:key name\="dispatchState">(.*?)</s:key>', response.text)
result = match.group(1)

您可以获得有关正则表达式here的更多信息。