我想从 API 请求数据,但我很难在一个请求中获取多个
params
。
我有以下代码行:
r = requests.get('https://api.delta.exchange/v2/tickers?contract_types= call_options, put_options')
根据API文档,每个contract_type的
params
可以通过用逗号分隔来调用。使用上面的行时,它只会返回第一个名为 param
的情况,在这种情况下为 call_options
。我尝试用 &
进行分离,效果相同。由于某种原因,使用 request.get(url, params={call_options,put_options})
会导致 call_options
未定义的错误。
可能是一个非常微不足道的问题,但我很感谢您的任何帮助或建议。
params
参数的正确参数是dict
,其键是参数名称,值是逗号分隔的字符串。
r = requests.get('https://api.delta.exchange/v2/tickers',
param={'contract_types': 'call_options,put_options'})
我无法重现为什么你的代码行应该只给你“看涨期权”。
以下示例和相应的输出显示 API 返回了预期的类型。
urls = ['https://api.delta.exchange/v2/tickers?contract_types=call_options',
'https://api.delta.exchange/v2/tickers?contract_types=put_options',
'https://api.delta.exchange/v2/tickers?contract_types=call_options,put_options']
for url in urls:
r = requests.get(url)
print(f"URL: {url}")
print(f"Occurences of call_options: {r.text.count('call_option')}")
print(f"Occurences of put_options: {r.text.count('put_options')}")
print("")
输出:
URL: https://api.delta.exchange/v2/tickers?contract_types=call_options
Occurences of call_options: 366
Occurences of put_options: 0
URL: https://api.delta.exchange/v2/tickers?contract_types=put_options
Occurences of call_options: 0
Occurences of put_options: 372
URL: https://api.delta.exchange/v2/tickers?contract_types=call_options,put_options
Occurences of call_options: 366
Occurences of put_options: 372
一般来说,您应该避免在 URL 中使用空格。