0

Hi everyone :) I am a bit of a newbie when it comes to JSON & Python, working on a new project today and would really appreciate some help. This is what I have so far. I aiming to interact with the Binance API in a few different ways.

url = 'https://api.binance.com/'
urlWithSymbol = 'https://api.binance.com/api/v1/trades?symbol='


def getRecentTrades(symbol):
    response = requests.get(urlWithSymbol+symbol+'&limit=10')

    # Print the content of the response (the data the server returned)
    print(response.content.decode("utf-8"))

    data = response.json()
    print(type(data))
    print(data)


getRecentTrades('NPXSBTC')

Everything works fine here, only the response is given to me in the form of a dictionary, and I would like to be able to individually access 'Bids', etc. What do you guys think is the next step here? Do I turn Data into a JSON Object?

Response:

{'asks': [['0.00000024', '109846420.00000000', []],
          ['0.00000025', '114178637.00000000', []],
          ['0.00000026', '82322155.00000000', []],
          ['0.00000027', '92902459.00000000', []],
          ['0.00000028', '44228198.00000000', []],
          ['0.00000029', '56824640.00000000', []],
          ['0.00000030', '111613234.00000000', []],
          ['0.00000031', '43773659.00000000', []],
          ['0.00000032', '80669915.00000000', []],
          ['0.00000033', '82725221.00000000', []]],
 'bids': [['0.00000023', '155213182.00000000', []],
          ['0.00000022', '191986504.00000000', []],
          ['0.00000021', '118013185.00000000', []],
          ['0.00000020', '168162758.00000000', []],
          ['0.00000019', '64558205.00000000', []],
          ['0.00000018', '63484191.00000000', []],
          ['0.00000017', '31635740.00000000', []],
          ['0.00000016', '39788788.00000000', []],
          ['0.00000015', '41020041.00000000', []],
          ['0.00000014', '16370913.00000000', []]],
 'lastUpdateId': 5532550}

Printed output:

<class 'list'>
[{'id': 1116367, 'price': '0.00000024', 'qty': '35542.00000000', 'time': 1534169839810, 'isBuyerMaker': False, 'isBestMatch': True}, {'id': 1116368, 'price': '0.00000023', 'qty': '400000.00000000', 'time': 1534169854271, 'isBuyerMaker': True, 'isBestMatch': True}, {'id': 1116369, 'price': '0.00000023', 'qty': '15542.00000000', 'time': 1534169991106, 'isBuyerMaker': True, 'isBestMatch': True}, {'id': 1116370, 'price': '0.00000024', 'qty': '1.00000000', 'time': 1534170015730, 'isBuyerMaker': False, 'isBestMatch': True}, {'id': 1116371, 'price': '0.00000023', 'qty': '19061.00000000', 'time': 1534170017669, 'isBuyerMaker': True, 'isBestMatch': True}, {'id': 1116372, 'price': '0.00000023', 'qty': '39.00000000', 'time': 1534170041722, 'isBuyerMaker': True, 'isBestMatch': True}, {'id': 1116373, 'price': '0.00000024', 'qty': '178943.00000000', 'time': 1534170118065, 'isBuyerMaker': False, 'isBestMatch': True}, {'id': 1116374, 'price': '0.00000023', 'qty': '188.00000000', 'time': 1534170158052, 'isBuyerMaker': True, 'isBestMatch': True}, {'id': 1116375, 'price': '0.00000023', 'qty': '173.00000000', 'time': 1534170160358, 'isBuyerMaker': True, 'isBestMatch': True}, {'id': 1116376, 'price': '0.00000023', 'qty': '32232.00000000', 'time': 1534170293908, 'isBuyerMaker': True, 'isBestMatch': True}]

Process finished with exit code 0

martineau
  • 119,623
  • 25
  • 170
  • 301
Owen Jim
  • 13
  • 6

4 Answers4

3

You can iterate over your dictionary to access each bid.

Ex:

import requests

url = 'https://api.binance.com/'
urlWithSymbol = 'https://api.binance.com/api/v1/depth?symbol='


def getRecentTrades(symbol):
    response = requests.get(urlWithSymbol+symbol)

    data = response.json()
    print(type(data))
    for bid in data["bids"]:
        print(bid)


getRecentTrades('NPXSBTC')

Output:

<type 'dict'>
[u'0.00000023', u'159089575.00000000', []]
[u'0.00000022', u'187598715.00000000', []]
[u'0.00000021', u'118040187.00000000', []]
[u'0.00000020', u'168707413.00000000', []]
[u'0.00000019', u'64558205.00000000', []]
[u'0.00000018', u'63484191.00000000', []]
[u'0.00000017', u'32063443.00000000', []]
[u'0.00000016', u'40413788.00000000', []]
[u'0.00000015', u'41686707.00000000', []]
[u'0.00000014', u'16842512.00000000', []]
[u'0.00000013', u'8228300.00000000', []]
[u'0.00000012', u'3940729.00000000', []]
[u'0.00000011', u'4739318.00000000', []]
[u'0.00000010', u'5012270.00000000', []]
[u'0.00000009', u'15746312.00000000', []]
[u'0.00000008', u'2100806.00000000', []]
[u'0.00000007', u'3053860.00000000', []]
[u'0.00000006', u'13562956.00000000', []]
[u'0.00000005', u'13869819.00000000', []]
[u'0.00000004', u'18357472.00000000', []]
[u'0.00000003', u'76777773.00000000', []]
[u'0.00000002', u'7518568.00000000', []]
[u'0.00000001', u'10500722.00000000', []]
Rakesh
  • 81,458
  • 17
  • 76
  • 113
1

json is a data interchange format. This seems to be more of a data type manipulation problem. Is it possible you could elaborate more on what you want to extract from the example data you have posted?

Gingmeister
  • 272
  • 3
  • 11
1

you can simple iterate over you data:

for record in data:
    id = record['id']

i can put you data in Dataframe for example:

import pandas as pd

record_list = []
for records in data:
    rocords_list.append(record['id'],record['qty'])

data = pd.DataFrame(records_lis,columns=['id','qty'])

now you need think in what columns you need and if need speed use Numpy for elementar operations.

0

def getRecentTrades(symbol): response = requests.get(lastTradesUrlWithSymbol+symbol+'&limit=10')

# Print the content of the response (the data the server returned)
print(response.content.decode("utf-8"))

data = response.json()
print(type(data))
print(data)

for record in data:
    id = record['id']
    price = record['price']
    qty = record['qty']

    print(str(id),str(price),str(qty))


getRecentTrades('NPXSBTC')

Response:

1116418 0.00000023 44.00000000
1116419 0.00000023 200000.00000000
1116420 0.00000023 1291335.00000000
1116421 0.00000024 135028.00000000
1116422 0.00000023 147.00000000
1116423 0.00000023 48.00000000
1116424 0.00000024 17887.00000000
1116425 0.00000023 172128.00000000
1116426 0.00000023 15006.00000000
1116427 0.00000023 129.00000000

Process finished with exit code 0
Owen Jim
  • 13
  • 6