Obtener JSON de la URL en Python
Siempre que queramos obtener datos de un servidor web utilizando una URL, esos datos deben tener algún formato particular. En general, siempre que queremos obtener datos del servidor web, utilizamos formatos JSON o XML.
Preferimos JSON sobre XML porque se ha vuelto bastante popular en la industria del software. Hay varias bibliotecas en Python para procesar JSON.
A lo largo de este tutorial, usaremos los módulos json
y requests
, que están disponibles en Python.
Los datos JSON que obtendremos provienen de la siguiente URL. Esta URL nos permite obtener todos los datos relacionados con los users
como nombre, correo electrónico, dirección, etc. Es de uso gratuito.
https://jsonplaceholder.typicode.com/users
En términos de API Restful, las URL se denominan puntos finales. A lo largo de este tutorial, usaremos estas dos palabras indistintamente. En la URL anterior, /users
se refiere a un punto final.
Si abre la URL anterior en el navegador, verá todos los datos relacionados con los users
en formato JSON. Se muestra a continuación.
[
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
"name": "Romaguera-Crona",
"catchPhrase": "Multi-layered client-server neural-net",
"bs": "harness real-time e-markets"
}
},
]
Tenga en cuenta que solo le hemos mostrado los datos JSON relacionados con un solo usuario en el bloque de código anterior. Esto es solo para fines explicativos. Pero si visita la URL, verá los datos de todos los usuarios.
El JSON se refiere a la JavaScript Object Notation
. Se utiliza para enviar y recibir datos entre un servidor y un cliente y viceversa. Aquí, no se confunda con la palabra JavaScript
; JSON es independiente de cualquier lenguaje de programación. En JSON, usamos dos tipos de corchetes para formatear los datos; uno son los corchetes []
que representan una matriz
o una lista
, y el otro son los corchetes {}
que representan un objeto
.
Los datos dentro del JSON siempre estarán en forma de pares clave-valor
entre comillas ""
. Entonces, si desea acceder a cualquier valor, debe usar la clave
asociada a ese valor. Por ejemplo, digamos que queremos acceder al nombre de usuario de los datos JSON anteriores; usaremos la clave name
para obtener el valor Leanne Graham
, que es el primer nombre de usuario. Además, tenga en cuenta que no se permiten comentarios en JSON.
Obtenga y acceda a datos JSON en Python
Primero, necesitamos importar los módulos requests
y json
para obtener y acceder a los datos.
import requests
import json
Obtener y convertir datos de la URL a una cadena
El primer paso que tenemos que realizar aquí es buscar los datos JSON usando la biblioteca de requests
.
url = requests.get("https://jsonplaceholder.typicode.com/users")
text = url.text
print(type(text))
Producción :
<class 'str'>
La biblioteca requests
tiene un método llamado get()
que toma una URL como parámetro y luego envía una solicitud GET
a la URL especificada. La respuesta que obtenemos del servidor se almacena en la variable denominada url
.
Esta respuesta almacenada dentro de la variable url
debe convertirse en una cadena con la ayuda del método .text
como url.text
. Y luego, almacenamos el resultado en la variable text
. Si imprime el tipo de la variable text
, será del tipo <class 'str'>
.
Parsethe JSON Data
El análisis es un proceso de conversión de datos de cadena en formato JSON. Para eso, usaremos el módulo json
.
data = json.loads(text)
print(type(data))
Producción :
<class 'list'>
El módulo json
viene con un método llamado loads()
, la s
en loads()
significa cadena. Como queremos convertir datos de cadena en JSON, usaremos este método. Dentro de este método, tenemos que pasar la variable text
que contiene la cadena de datos json.loads(text)
y almacenarla dentro de la variable data
.
Ahora los data
tendrán la respuesta JSON completa. Si imprime el tipo de la variable data
, entonces será de tipo <clase 'list'>
porque en este caso, la respuesta JSON comienza con corchetes []
y en Python, las listas comienzan con cuadrado soportes.
Acceder a los datos JSON
Ahora que hemos analizado los datos JSON, estamos listos para acceder a los valores individuales que queremos usando la variable data
. Para acceder a los detalles del primer usuario, como Nombre y Dirección, podemos hacer lo siguiente.
import json
import requests
url = requests.get("https://jsonplaceholder.typicode.com/users")
text = url.text
data = json.loads(text)
user = data[0]
print(user["name"])
address = user["address"]
print(address)
Producción :
Leanne Graham
{'street': 'Kulas Light', 'suite': 'Apt. 556', 'city': 'Gwenborough', 'zipcode': '92998-3874', 'geo': {'lat': '-37.3159', 'lng': '81.1496'}}
Para acceder al primer usuario de la lista de usuarios, tenemos que utilizar el índice 0
de los datos JSON, que se almacena dentro de una variable llamada data
, y luego almacenar todos los detalles de ese primer user
interior. Ahora bien, este users
es un objeto que contiene todos los detalles relacionados con ese usuario. Para acceder al nombre, solo tenemos que pasar la tecla name
dentro de la variable user
como user['name']
y luego imprimirlo. Imprimirá el nombre del usuario dentro de la consola.
Y para acceder a la dirección tenemos que pasar la tecla address
dentro de la variable de usuario, es decir, user['address']
, y luego almacenarla dentro de una variable llamada address
y luego imprimirla. Esto le dará un objeto que contendrá todos los detalles específicos relacionados con el campo de dirección, como número de apartamento, nombre de la calle, código postal, etc. Digamos que de estos detalles solo desea el código postal
del usuario; luego debe pasar la clave del código zipcode
dentro del objeto address
.
Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.
LinkedIn