尝试在请求 get 调用中传递查询参数时出现错误。在 python 中使用以下内容:
import requests as re
url = 'https://api.eia.gov/v2/natural-gas/pri/fut/data/?api_key=' + API_KEY
params = {
"frequency": "daily",
"data": [
"value"
],
"start": "2021-01-01",
"facets": {
"series": [
"RNGWHHD"
]
},
"offset": 0,
"length": 5000
}
x = re.get(url = url, params = params)
if x.status_code == 200:
print('Success')
else:
print(x.text)
{"error":"Invalid format for facet 'series'. Must provide which facet and an array of values. For example, to filter by location for VA and CA: facets[location][]=VA&facets[location][]=CA","code":400}
我可以使用 仪表板作为参考返回数据。还可以在请求的 url 中包含参数,如下所示:
'https://api.eia.gov/v2/natural-gas/pri/fut/data/?frequency=daily&data[0]=value&facets[series][]=RNGWHHD&start=2021-01-01&sort[0][column]=period&sort[0][direction]=desc&offset=0&length=5000&api_key=' + API_KEY
x = re.get(url = url)
但不是通过将参数字典传递给
get
。我做错了什么?
似乎 requests 没有按照您的预期构建 url
如果您在调用 requests.get 函数后看到 url,您应该看到类似这样的内容:
>>> x.url
'https://api.eia.gov/v2/natural-gas/pri/fut/data/?api_key=API_KEY&frequency=daily&data=value&start=2021-01-01&facets=series&offset=0&length=5000'
所以考虑以某种方式解析你的参数