Python使用xml.etree.ElementTree的fromstring解析指定站点报错如何解决
问题解决建议
- 报错根因:第二个ELIA电网数据接口默认返回JSON格式数据,你用XML解析库处理非XML内容自然会触发语法错误。
- 解决方案1:直接解析返回的JSON内容,无需使用XML相关逻辑,适配代码如下:
import requests import pandas as pd r = requests.get('https://griddata.elia.be/eliabecontrols.prod/interface/oneminuteimbalance/SystemImbalancePrice') # 直接解析JSON data = r.json() # 如需结构化处理可直接转为DataFrame df = pd.json_normalize(data) print(df)
- 解决方案2:如果你明确需要XML格式返回,可以通过请求头指定接受的返回格式,若接口支持XML返回则会返回对应内容,适配代码如下:
import requests import xml.etree.ElementTree as ET # 指定接受XML格式的返回结果 headers = {'Accept': 'application/xml'} r = requests.get('https://griddata.elia.be/eliabecontrols.prod/interface/oneminuteimbalance/SystemImbalancePrice', headers=headers) # 先校验返回内容类型再选择解析方式 content_type = r.headers.get('Content-Type', '') if 'application/xml' in content_type: tree = ET.fromstring(r.content) # 后续XML解析逻辑 elif 'application/json' in content_type: data = r.json() print("接口不支持XML返回,已解析为JSON格式", data)
- 额外提示:请求完成后可先打印
r.headers['Content-Type']确认返回内容类型,再选择对应解析逻辑,可避免同类解析错误。
内容的提问来源于stack exchange,提问作者user16546282
相关产品推荐
相关产品推荐

