Не можете получить информацию из URL API, работающего с JSON? - PullRequest
1 голос
/ 01 ноября 2019

Я хочу получить информацию API из этого URL: https://api.binance.com/api/v1/ticker/24hr Мне нужно указать символ (ETHBTC) и получить последнюю цену.

import requests

binance = requests.get("https://api.binance.com/api/v1/ticker/24hr")
e = binance.json()
print(e['ETHBTC']['lastPrice'])

Ошибка:

Traceback (most recent call last):
  File "C:\Users\crist\Documents\Otros\Programacion\Python HP\borrar.py", line 6, in <module>
    print(e['ETHBTC']['lastPrice'])
TypeError: list indices must be integers or slices, not str

1 Ответ

0 голосов
/ 01 ноября 2019

Поскольку вы не указываете нужную пару в своем запросе, Binance API возвращает подробности для всех пар в списке, например:

[
    { Pair 1 info },
    { Pair 2 info },
    { etc.        }
]

Так что вам нужно будет либо запроситьтолько сведения о нужной паре или найдите сведения о нужной паре в списке, который вы уже выбираете.

Чтобы запросить только нужную пару, используйте параметры URL-адреса запросов в качестве аргумента на ваш get запрос:

myparams = {'symbol': 'ETHBTC'}
binance = requests.get("https://api.binance.com/api/v1/ticker/24hr", params=myparams)
e = binance.json()
print(e['lastPrice'])

Или, чтобы найти нужную пару в списке, который вы уже выбираете, вы можете перебрать список. Первый вариант - это путь, если вы не хотите смотреть на множество разных пар.

binance = requests.get("https://api.binance.com/api/v1/ticker/24hr")
e = binance.json()
for pair in e:
    if pair['symbol'] == 'ETHBTC':
        print(pair['lastPrice'])
...