Python - Conexión API - acceder a valores JSON

 
Vista:
sin imagen de perfil

Conexión API - acceder a valores JSON

Publicado por Christian (1 intervención) el 03/11/2021 13:30:18
Buenas tardes,
Quiero aprender a manejar con los archivos JSON de una conexión API. Quiero obtener las altitudes de Barcelona o de cualquier otro sitio. El código que he empleado lo he obtenido de AEMET:
https://opendata.aemet.es/centrodedescargas/ejemProgramas?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import http.client
import json
import requests
import ssl
 
ssl._create_default_https_context = ssl._create_unverified_context
conn = http.client.HTTPSConnection("opendata.aemet.es")
 
headers = {
    'cache-control': "no-cache"
    }
 
conn.request("GET", "/opendata/api/valores/climatologicos/inventarioestaciones/todasestaciones/?api_key=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJjaHJpc3RpYW5fcmV5bmFsdHRAaG90bWFpbC5jb20iLCJqdGkiOiIxNTgxODg1ZC1jZDNjLTRiNTUtOGNkNi1jZGFiZjE3ZDdlN2QiLCJpc3MiOiJBRU1FVCIsImlhdCI6MTYzNTk0MTI3MCwidXNlcklkIjoiMTU4MTg4NWQtY2QzYy00YjU1LThjZDYtY2RhYmYxN2Q3ZTdkIiwicm9sZSI6IiJ9.r6FTsfJk8DpPf5ZdMMvS_nIdjvnjXSkNGZpTR_ika3g", headers=headers)
 
res = conn.getresponse()
data = res.read()
 
print(data.decode("utf-8"))
f = requests.get(json.loads(data)["datos"])
print(f.text)

pensaba que añadiendo al final del código
1
print(f.value[0])
o
1
print(f.text[0])
me iba a salir el primer dato que este entre llaves para ya ir manipulando uno a uno pero veo que no.
¿Cómo podría hacerlo, obtener por ejemplo las altitudes de Barcelona y que sea el valor tipo INT?
siempre que acceda a un JSON de un API ¿se tiene que usar ambas librerías para la comunicación HTTP.CLIENT y REQUEST?
si por ejemplo tengo una clave y usuario para una API ¿Qué librería sería mas recomendable a usar?

Adjunto parte de la salida del código.
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de 7aamin
Val: 11
Ha disminuido su posición en 6 puestos en Python (en relación al último mes)
Gráfica de Python

Conexión API - acceder a valores JSON

Publicado por 7aamin (117 intervenciones) el 03/11/2021 19:38:49
1
2
3
4
5
6
7
8
9
10
11
12
13
import requests
 
apiKey = "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJjaHJpc3RpYW5fcmV5bmFsdHRAaG90bWFpbC5jb20iLCJqdGkiOiIxNTgxODg1ZC1jZDNjLTRiNTUtOGNkNi1jZGFiZjE3ZDdlN2QiLCJpc3MiOiJBRU1FVCIsImlhdCI6MTYzNTk0MTI3MCwidXNlcklkIjoiMTU4MTg4NWQtY2QzYy00YjU1LThjZDYtY2RhYmYxN2Q3ZTdkIiwicm9sZSI6IiJ9.r6FTsfJk8DpPf5ZdMMvS_nIdjvnjXSkNGZpTR_ika3g"
 
dataParsed = requests.get(f"https://opendata.aemet.es/opendata/api/valores/climatologicos/inventarioestaciones/todasestaciones/?api_key={apiKey}").json()
 
"""Esto devuelve un objeto JSON con la URL para solicitar los datos de Climatologia"""
"""{'descripcion': 'exito', 'estado': 200, 'datos': 'https://opendata.aemet.es/opendata/sh/21bbe1a1', 'metadatos': 'https://opendata.aemet.es/opendata/sh/0556af7a'}"""
 
"""Luego haces un nuevo request a la URL de la Clave 'datos' """
finalData = requests.get(dataParsed['datos']).json()
for obj in finalData:
    print(obj)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar