【问题标题】:Use of parameters dictionary with Python requests GET method使用带有 Python 请求 GET 方法的参数字典
【发布时间】:2023-02-11 09:15:15
【问题描述】:

尝试通过 EIA 数据 API (v2) 检索数据:https://www.eia.gov/opendata/documentation.php

我能够使用 API 仪表板返回数据:

https://www.eia.gov/opendata/browser/electricity/retail-sales?frequency=monthly&data=price;revenue;sales;&start=2013-01

但是当我尝试使用随附的文档在 Python 中进行检索时,使用相同的参数时我似乎没有返回任何值。

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

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

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

如果我打印由 GET 方法创建的 url,并与仪表板中包含的 API url 进行比较,问题似乎出在 GET 方法尝试从 data 参数检索项目的方式中:

作品

https://api.eia.gov/v2/electricity/retail-sales/data/?frequency=monthly&data[0]=price&data[1]=revenue&data[2]=sales&start=2013-01&sort[0][column]=period&sort[0][direction]=desc&offset=0&length=5000

不起作用(由 GET 方法返回):

https://api.eia.gov/v2/electricity/retail-sales/data/?api_key=MY_API&frequency=monthly&data=revenue&data=sales&data=price&start=2013-01

任何人都可以提供有关如何强制 GET 方法以与 API 仪表板显示的方式相同的方式传递我的数据参数的指导吗?

【问题讨论】:

    标签: python api rest python-requests


    【解决方案1】:

    你的数据参数网址格式不正确。如果您希望在您的工作版本中形成 url,请尝试以下操作:

    url = 'https://api.eia.gov/v2/electricity/retail-sales/data/?api_key=' + API_KEY
    
    data = [
            "revenue",
            "sales",
            "price"
        ]
    
    params = {
        "frequency": "monthly",
        "start": "2013-01"
    }
    for index in range(0, len(data)):
        params[f"data[{index}]"] = data[index]
    
    response = requests.get(url, params = params)
    

    但是如果服务器够用,那么名字中的方括号数据[]参数足够:

    url = 'https://api.eia.gov/v2/electricity/retail-sales/data/?api_key=' + API_KEY
    
    params = {
        "frequency": "monthly",
        "data[]": [
            "revenue",
            "sales",
            "price"
        ],
        "start": "2013-01"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      • 2021-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多