import requests
# Exemple d'URL pour la météo de Paris
url = "https://api.open-meteo.com/v1/forecast?latitude=48.8566&longitude=2.3522¤t_weather=true"
response = requests.get(url)
data = response.json()
print(data)
Pour récupérer les clés sous la clé current_weather, on peut extraire en priorité le json de la clé current_weather, puis ensuite, les clés time et temperature :
1
current_weather=data["current_weather"]
2
print(current_weather)
3
temperature=current_weather["temperature"]
4
datetime=current_weather["time"]
5
print(f"Température actuelle à Epinal: {temperature}°C à {datetime}")
current_weather = data["current_weather"]
print(current_weather)
temperature = current_weather["temperature"]
datetime = current_weather["time"]
print(f"Température actuelle à Epinal: {temperature}°C à {datetime}")
.
Truc & astuce : écritures différentes pour récupérer les données⚓
current_weather = data["current_weather"]
Utilise la syntaxe par clé avec les crochets.
Si la clé "current_weather" n'existe pas dans le dictionnaire data, cela entraînera une exception KeyError.
Cela suppose que vous êtes sûr que la clé existe dans le dictionnaire.
temperature = current_weather.get('temperature')
Utilise la méthode get() du dictionnaire.
Si la clé 'temperature' n'existe pas dans current_weather, au lieu de générer une erreur, cela renvoie None par défaut (ou une valeur spécifiée si vous la fournissez comme second argument, par exemple get('temperature', 0)).
C'est une façon plus sûre d'accéder à une clé qui pourrait manquer.
import requests
# Coordonnées de la ville (exemple : Paris)
latitude = 48.8566
longitude = 2.3522
# Définir les paramètres dans un dictionnaire
params = {
'latitude': latitude,
'longitude': longitude,
'current_weather': 'true'
}
# Faire la requête en passant les paramètres
response = requests.get("https://api.open-meteo.com/v1/forecast", params=params)
# Récupérer et afficher la réponse JSON
data = response.json()
print(data)
Remarque :
C'est une autre façon en manipulant les chaînes de caractères et le contenu des variables dans les expressions avec les {} :
Plus clair, plus facile à maintenir.
Pas besoin de construire manuellement l’URL finale.
requests encode automatiquement les paramètres dans l’URL.
print(f" Vitesse du vent : {current['windspeed']} km/h")
32
print(f" Heure : {current['time']}")
33
else:
34
print("Données météorologiques non disponibles.")
35
else:
36
print(f"Impossible de géocoder la ville: {ville}")
from geopy.geocoders import Nominatim
import requests
# 1. Géocoder : convertir le nom de la ville en coordonnées
ville = "Epinal" # Changez cette valeur si vous souhaitez une autre ville
geolocator = Nominatim(user_agent="mon_app")
location = geolocator.geocode(ville)
if location:
latitude = location.latitude
longitude = location.longitude
print(f"Coordonnées de {ville} : {latitude}, {longitude}")
# 2. Préparer les paramètres pour l'API
params = {
'latitude': latitude,
'longitude': longitude,
'current_weather': 'true'
}
# 3. Faire la requête GET avec requests et paramètres
url = "https://api.open-meteo.com/v1/forecast"
response = requests.get(url, params=params)
data = response.json()
# 4. Afficher les données
if 'current_weather' in data:
current = data['current_weather']
print(f"Météo actuelle à {ville} :")
print(f" Température : {current['temperature']}°C")
print(f" Vitesse du vent : {current['windspeed']} km/h")
print(f" Heure : {current['time']}")
else:
print("Données météorologiques non disponibles.")
else:
print(f"Impossible de géocoder la ville: {ville}")
import json
from collections import defaultdict
from datetime import datetime
# Exemple de données JSON, vous pouvez la charger depuis un fichier ou une variable
data_json = '''
{
"hourly": {
"time": ["2022-06-19T00:00", "2022-06-19T01:00", "2022-06-19T02:00", "2022-06-20T00:00", "2022-06-20T01:00"],
"temperature_2m": [13.7, 13.3, 12.8, 14.0, 14.5]
}
}
'''
# Charger les données JSON
data = json.loads(data_json)
# Accéder à la liste de temps et de températures
times = data['hourly']['time']
temperatures = data['hourly']['temperature_2m']
# Dictionnaire pour stocker la somme et le nombre de valeurs par date
daily_temps = defaultdict(lambda: {'sum': 0, 'count': 0})
# Parcourir les données
for t, temp in zip(times, temperatures):
# Extraire la date (format: 'YYYY-MM-DD')
date_str = t.split('T')[0]
# Accumuler la température
daily_temps[date_str]['sum'] += temp
daily_temps[date_str]['count'] += 1
# Calculer la moyenne journalière
moyenne_journaliere = {}
for date, values in daily_temps.items():
moyenne = values['sum'] / values['count']
moyenne_journaliere[date] = moyenne
# Afficher les résultats
for date, moyenne in moyenne_journaliere.items():
print(f"{date} : {moyenne:.2f} °C")
Pré-requis⚓
Site Open-meteo
Le module request en python est installé.
Variables - Structure conditionnelle - Fonctions - Modules :
Structure de données format JSON[1]
Structure de données Dataframe avec le module pandas.
Code⚓
# Exemple d'URL pour la météo de Paris
Résultat de data⚓
{'latitude': 48.16, 'longitude': 6.4599996, 'generationtime_ms': 0.055789947509765625, 'utc_offset_seconds': 0, 'timezone': 'GMT', 'timezone_abbreviation': 'GMT', 'elevation': 329.0, 'current_weather_units': {'time': 'iso8601', 'interval': 'seconds', 'temperature': '°C', 'windspeed': 'km/h', 'winddirection': '°', 'is_day': '', 'weathercode': 'wmo code'}, 'current_weather': {'time': '2025-09-08T06:45', 'interval': 900, 'temperature': 17.5, 'windspeed': 2.0, 'winddirection': 135, 'is_day': 1, 'weathercode': 61}}
Résultat avec un format⚓
Remarque : A retenir⚓
Une requête de type GET, quelles sont les autres disponibles ?
Le format des données JSON (variable data) avec les {}, la notion de clé : valeur pour identifier les données.
Observez plus précisément la clé
current_weather
qui contient une structure json avec ses propres clés, valeurs)Pour récupérer les clés sous la clé current_weather, on peut extraire en priorité le json de la clé current_weather, puis ensuite, les clés time et temperature :
.
Truc & astuce : écritures différentes pour récupérer les données⚓
current_weather = data["current_weather"]
temperature = current_weather.get('temperature')
Code⚓
# Coordonnées de la ville (exemple : Paris)
# Définir les paramètres dans un dictionnaire
# Faire la requête en passant les paramètres
# Récupérer et afficher la réponse JSON
Remarque :
C'est une autre façon en manipulant les chaînes de caractères et le contenu des variables dans les expressions avec les {} :
Code avec le module geopy⚓
# 1. Géocoder : convertir le nom de la ville en coordonnées
# 2. Préparer les paramètres pour l'API
# 3. Faire la requête GET avec requests et paramètres
# 4. Afficher les données
else:
else:
#structure attendue pour la réponse
# {
# ...
# "hourly": {
# "time": ["2022-06-19t00:00","2022-06-19t01:00", ...],
# "wind_speed_10m": [3.16,3.02,3.3,3.14,3.2,2.95, ...],
# "temperature_2m": [13.7,13.3,12.8,12.3,11.8, ...],
# "relative_humidity_2m": [82,83,86,85,88,88,84,76, ...],
# }
# }
# print(data)
# écriture ddes données au format dataframe pandas (eq. tableau 2 dimensions)
#print(df) # pour afficher l'ntégralité des données
# Exemple de données JSON, vous pouvez la charger depuis un fichier ou une variable
{
"hourly": {
"time": ["2022-06-19T00:00", "2022-06-19T01:00", "2022-06-19T02:00", "2022-06-20T00:00", "2022-06-20T01:00"],
"temperature_2m": [13.7, 13.3, 12.8, 14.0, 14.5]
}
}
'''
# Charger les données JSON
# Accéder à la liste de temps et de températures
# Dictionnaire pour stocker la somme et le nombre de valeurs par date
# Parcourir les données
# Extraire la date (format: 'YYYY-MM-DD')
# Accumuler la température
# Calculer la moyenne journalière
# Afficher les résultats