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

如何让Python requests GET方法按EIA API要求传递data数组参数?

问题

我尝试通过EIA数据API(v2)获取数据,在API仪表板中使用指定参数能成功返回数据,但用Python的requests库GET方法传递相同参数时却失败。

我的代码如下:

url = 'https://api.eia.gov/v2/electricity/retail-sales/data/?api_key=' + API_KEY

params = {
    "frequency": "monthly",
    "data": [
        "revenue",
        "sales",
        "price"
    ],
    "start": "2013-01"
}

# 注:原代码中x未定义,推测是x = requests.get(url, params=params)
if x.status_code == 200:
    print('Success')
else:
    print('Failed')  
    
res = x.json()['response']
data = res['data']

对比生成的URL发现问题出在data参数的传递格式:

  • 仪表板生成的有效URL格式:data[0]=price&data[1]=revenue&data[2]=sales
  • requests默认生成的无效URL格式:data=revenue&data=sales&data=price

请问如何让GET请求按照API仪表板的格式传递data参数?

解决方案

requests默认会把列表参数转为重复的键值对(如data=a&data=b),但EIA API需要的是带索引的数组格式(如data[0]=a&data[1]=b)。可以通过以下两种方式解决:

方法1:手动构造带索引的参数键

直接把data参数拆分成带索引的键值对,完全匹配API要求的格式:

import requests

API_KEY = "你的API密钥"
url = 'https://api.eia.gov/v2/electricity/retail-sales/data/'

params = {
    "api_key": API_KEY,
    "frequency": "monthly",
    "start": "2013-01",
    "data[0]": "price",
    "data[1]": "revenue",
    "data[2]": "sales"
}

x = requests.get(url, params=params)
if x.status_code == 200:
    print('Success')
    res = x.json()['response']
    data = res['data']
else:
    print('Failed', x.status_code)

方法2:使用requests的array_format参数(需requests 2.25.0+)

从requests 2.25.0版本开始,支持通过array_format指定数组参数的编码方式,设置为'index'即可自动生成带索引的格式:

import requests

API_KEY = "你的API密钥"
url = 'https://api.eia.gov/v2/electricity/retail-sales/data/'

params = {
    "api_key": API_KEY,
    "frequency": "monthly",
    "data": ["price", "revenue", "sales"],
    "start": "2013-01"
}

x = requests.get(url, params=params, array_format='index')
if x.status_code == 200:
    print('Success')
    res = x.json()['response']
    data = res['data']
else:
    print('Failed', x.status_code)

补充说明

建议把api_key放在params字典中,而非直接拼接在URL里,这种方式更安全规范,也便于参数统一管理。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:05:15