You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python解析API返回XML响应获取testId值报错求助

解决XML提取testId时的AttributeError问题

Hey,我来帮你搞定这个问题!你碰到的AttributeError: 'NoneType' object has no attribute 'text',核心原因是代码里直接调用find("testId")找不到目标节点——因为testId并非根节点的直接子元素,它嵌套在<data>节点内部呢!

先看你获取到的XML结构:

<?xml version="1.0" encoding="UTF-8"?>
<response>
<statusCode>200</statusCode>
<statusText>Ok</statusText>
<data>
<testId>180523_YM_054fd7d84fd4ea7aed237f87289e0c7c</testId>
<ownerKey>dfc65d98de13c4770e528ef5b65e9629a52595e9</ownerKey>
<jsonUrl>http://www.webpagetest.org/jsonResult.php?test=180523_YM_054fd7d84fd4ea7aed237f87289e0c7c</jsonUrl>
</data>
</response>

很明显,testId是<data>的子节点,而不是<response>的直接子节点,所以直接用find("testId")会返回None,再调用.text自然就触发错误了。

下面给你两种可行的修正方案:

方案一:用XPath全局查找节点

使用.//testId这种XPath表达式,可以遍历整个XML文档找到匹配的节点,代码修改如下:

import requests
from xml.etree import ElementTree as ET

# 发起API请求获取XML
r = requests.get(f"{myconfig.URL_webpagetest}?url={testurl}&f=xml&k={myconfig.apikey_webpagetest}")
xmltxt = r.content
print(xmltxt)

# 解析XML并查找testId
root = ET.XML(xmltxt)
testId_elem = root.find(".//testId")
if testId_elem:
    testId = testId_elem.text
    # 发起状态查询请求
    r = requests.get(f"http://www.webpagetest.org/testStatus.php?f=xml&test={testId}")
else:
    print("未能找到testId节点,请检查XML结构")

方案二:逐层定位节点(更严谨)

先找到<data>节点,再从它下面获取testId,这样能明确节点层级,避免意外匹配到其他同名节点:

import requests
from xml.etree import ElementTree as ET

r = requests.get(f"{myconfig.URL_webpagetest}?url={testurl}&f=xml&k={myconfig.apikey_webpagetest}")
xmltxt = r.content
print(xmltxt)

root = ET.XML(xmltxt)
# 先找data节点
data_node = root.find("data")
if data_node:
    testId_elem = data_node.find("testId")
    if testId_elem:
        testId = testId_elem.text
        r = requests.get(f"http://www.webpagetest.org/testStatus.php?f=xml&test={testId}")
    else:
        print("data节点下未找到testId")
else:
    print("XML中未找到data节点")

另外提醒一句:你代码里的XML(xmltxt)应该是ET.XML(xmltxt)吧?记得要先导入xml.etree.ElementTree模块,不然会出现未定义的错误哦。

内容的提问来源于stack exchange,提问作者Bhupendra Singh Rautela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:43:18