Curso de programación de criptomonedas con Python - 5. Recopilar datos uno a uno: listas

in #spanish7 years ago (edited)

Hoy vamos a ver cómo recopilar datos del exchange Bittrex usando una envoltura para Python. También veremos cómo mostrar los datos limpios y ordenados. Así que pongámonos manos a la obra.

En la clase anterior aprendimos a guardar los datos de Poloniex. La API de esta exchange nos provee los datos en diccionarios anidados, siguiendo la siguiente estructura:

{'elemento1': {'elemento1_1': dato, 'elemento1_2': dato...}, elemento2: {...}...}

Pero la API de Bittrex nos proveerá la información en diccionarios dentro de listas, por lo que la forma de acceder a sus datos cambia un poco.

Listas

Las listas son conjuntos de datos más simples que los diccionarios. Mientras los diccionarios tienen una claves que corresponden a valores y podemos acceder a sus valores insertando sus claves así `['clave'], las listas van a ser simplemente datos uno detrás de otro. Una lista se representa así:

[dato1, dato2, dato3...]

La API de Bittrex

Primero creamos un archivo con la extensión '.py', en un editor que corra con nuestro intérprete Python. Vamos a ir a la documentación de la API. También vamos a descargar una envoltura para Python, a mi me gusta esta, aunque no es la que viene como ejemplo en la documentación de la API.

Descargamos el archivo 'bittrex.py' y lo guardamos en la misma carpeta donde hemos creado nuestro archivo con la extensión '.py'.

Recopilar datos de Bittrex

Vamos a hacer un ejemplo sencillo para entender la diferencia de trabajar con listas y con diccionarios. Escribimos lo siguiente en el editor de nuestro intérprete:

from bittrex import bittrex
info_mercados = bittrex.getmarketsummaries()
print info_mercados

Ahora obtendremos lo que podemos ver aquí, quitando esta parte del código: {"success":true,"message":"","result": Eso se debe a que esta envoltura está configurada para que nos devuelva el dato "result" o "message" del primer diccionario que Bittrex nos envía.

Así que en nuestro intérprete aparece una lista de diccionarios. Para acceder a los valores de una lista sólo hay que poner el nombre de la lista seguido de [n], donde n será un número entero que indicará la posición que se encuentra el dato que queremos de la lista. Lo que debemos tener en cuenta es que el primer dato estará en la posición 0, no en 1.

Lo entenderemos mejor con un ejemplo, cambiamos la última línea del código:

print info_mercados[0]

Ahora nos devuelve la información para la primera moneda. Pero esto en la práctica no nos sirve de mucho. Nosotros queremos acceder a un mercado en particular, BTC-STEEM. ¿Cómo lo hacemos? Afortunadamente la API trae otro método para referirnos a una moneda concreta:

from bittrex import bittrex
info_steem = bittrex.getmarketsummary('BTC-STEEM')
print info_steem

Con este ejemplo vamos a introducirnos en las funciones, concepto que profundizaremos en próximas entregas. De todas formas explico lo que hemos hecho en la 2ª línea: bittrexllama a la clase que configura la envoltura, . indica que accedemos a una función dentro de la clase, getmarketsummary indica la función y STEEM es el parámetro que pasamos a dicha función.

Diccionarios, listas y funciones

Al obtener datos concretos de las API tendremos en cuenta, principalmente, 3 formas de hacerlo:

  1. Diccionarios: en la respuesta aparecen como {}, y para referirnos a un dato dentro de ellos utilizaremos ['dato'], o ["dato"](Python interpreta las comillas simples y las dobles de la misma forma).
  2. Listas: en la respuesta aparecen como [], y para referirnos a un dato dentro de ellas utilizaremos [n] donde n es un número entero.
  3. Funciones: las envolturas nos facilitan el no tener que escribir constantemente URLs complicadas. Están basadas en funciones a las que le pasamos parámetros para que completen las URLs de las llamadas.

Respuestas legibles

Imprimimos limpiamente el precio más alto que ha alcanzado hoy STEEM en Bittrex con el siguiente código:

from bittrex import bittrex
info_steem = bittrex.getmarketsummary('BTC-STEEM')
print "El precio más alto que ha alcanzado STEEM en Bittrex durante las últimas 24 horas, ha sido de: ", info_steem['High'], " BTC"

Índice del curso:

1. Presentación
2. Cómo empezar: llamadas a APIs
3. Envolturas
4. Recopilar datos uno a uno: diccionarios
5. Recopilar datos uno a uno: listas

Sort:  

This post has been linked to from another place on Steem.

Learn more about and upvote to support linkback bot v0.5. Flag this comment if you don't want the bot to continue posting linkbacks for your posts.

Built by @ontofractal

Hermano lo felicito y le agradezco por toda esta información que nos hace llegar gratuitamente. Quisiera me ayude a como colocar la instrucción: "from bittrex import bittrex" con exito, lo he intentado desde el idle, desde un py y nada. he intentado instalar la envoltura de bittrex con "pip install python-bittrex-master.zip" y me da errores. en fin estoy trancado en este capitulo. Saludos.

Buenas noches gracias por el materia tambien tengo el mismo error cuando escribo "from bittrex import bittrex" ImportError: cannot import name Bittrex

Coin Marketplace

STEEM 0.29
TRX 0.12
JST 0.035
BTC 64866.85
ETH 3369.73
USDT 1.00
SBD 4.45