La simplicité et l'adaptabilité de Python l'ont aidé à gagner en popularité au fil des ans. Vous pouvez facilement récupérer des données utiles sur Internet avec Python. Vous pouvez ensuite utiliser ces données pour piloter une application pratique.
Découvrez comment trouver des données météorologiques en temps réel à l'aide du web scraping et des API. Vous pouvez utiliser ces données récupérées pour développer une application météo simple.
Obtenez les détails météorologiques actuels d'une ville à l'aide de Web Scraping
Le scraping Web est le processus d'extraction de données et de contenu d'un site Web. La récupération autonome de données sur le Web ouvre de nombreux cas d'utilisation. Mais la plupart de ces données sont au format HTML, que vous devez analyser et inspecter pour extraire les données pertinentes.
Vous pouvez extraire les données météo en direct de n'importe quelle ville à l'aide du web scraping. La bibliothèque BeautifulSoup de Python est la bibliothèque incontournable pour extraire des données de fichiers HTML et XML. Vous devez installer la bibliothèque BeautifulSoup Python via pip pour commencer le processus de grattage. Exécutez la commande suivante dans le terminal pour installer les bibliothèques BeautifulSoup et requests :
pépin installer bellesoup4 requêtes
Après avoir installé les bibliothèques requises, commencez par les importer dans votre code :
Le code utilisé dans ce projet est disponible dans un Référentiel GitHub et est libre d'utilisation sous la licence MIT.
depuis bs4 importer BelleSoupe
importer demandes
Ensuite, vous devez fournir les détails de l'en-tête afin que le client et le serveur puissent transmettre des informations supplémentaires avec une requête ou une réponse HTTP :
en-têtes = {
'Agent utilisateur': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
Créer une fonction, find_weather(), pour faire une requête à Google en utilisant le demandes.get() méthode. Vous utiliserez une URL de recherche pour obtenir la météo d'une ville, puis récupérerez les données significatives pour obtenir l'emplacement, la température, l'heure et la description de la météo. Ensuite, utilisez BeautifulSoup pour analyser la réponse HTML reçue :
définitivementfind_weather(Nom de Ville):
nom_ville = nom_ville.replace("", "+")essayer:
res = demandes.get(
F'https://www.google.com/search? q={nom_ville}&oq={nom_ville}&aqs=chrome.0.35i39l2j0l4j46j69i60.6128j1j7&id source=chrome&c'est-à-dire=UTF-8', en-têtes=en-têtes)imprimer("Chargement...")
soupe = BeautifulSoup (res.text, 'html.parseur')
emplacement = soupe.select('#wob_loc')[0].getText().strip()
temps = soupe.select('#wob_dts')[0].getText().strip()
info = soupe.select('#wob_dc')[0].getText().strip()
température = soupe.select('#wob_tm')[0].getText().strip()
imprimer("Emplacement: " + lieu)
imprimer("Température: " + température + "°C")
imprimer("Temps: " + temps)
imprimer("Descriptif météo: " + infos)
sauf:
imprimer("Veuillez entrer un nom de ville valide")
Pour extraire les identifiants des éléments, effectuez une recherche Google et inspectez la page dans votre navigateur à l'aide d'outils Web. Vous devez inspecter l'élément pour trouver les ID de l'élément HTML pour lequel vous souhaitez extraire des données :
Ensuite, transmettez ces identifiants au sélectionner() méthode. Cette méthode exécute un sélecteur CSS sur le document analysé et renvoie tous les éléments correspondants. Le getText() La méthode extrait le texte de l'élément HTML. Le bande() La méthode supprime tous les caractères d'espacement de début et de fin du texte. Une fois que vous avez extrait une valeur propre, vous pouvez la stocker dans une variable.
Enfin, demandez à l'utilisateur de saisir une ville et de la transmettre au find_weather fonction:
nom_ville = entrée("Saisissez le nom de la ville: ")
nom_ville = nom_ville + " temps"
find_weather (nom_ville)
Maintenant, lorsque vous exécutez le code, il vous demandera d'entrer un nom de ville. Vous devez entrer un nom de ville valide pour obtenir les résultats ou le code déclenchera une exception.
Obtenez les détails météorologiques actuels d'une ville à l'aide de l'API OpenWeatherMap
OpenWeatherMap est un service en ligne appartenant à OpenWeather Ltd. Son API fournit des données météorologiques mondiales, y compris la météo actuelle, les prévisions et les données passées pour n'importe quel emplacement. Le niveau gratuit de l'API OpenWeatherMap fournit des données météorologiques actuelles avec une limite de 60 appels/minute. Vous devez créer un compte sur OpenWeatherMap pour obtenir votre propre clé API.
Ne poussez pas le code avec la clé API vers un référentiel public car toute personne ayant accès à vos fichiers source peut voir et voler votre clé. Dans une application de production, considérez déplacer les données de la clé API vers un fichier .env pour une sécurité renforcée.
Aller à OpenWeatherMap's site web et créez un compte gratuit. Après avoir créé le compte, vous pouvez trouver vos clés API sur le Mes clés API page. Vous pouvez utiliser la clé API par défaut fournie par OpenWeatherMap ou en générer une vous-même. OpenWeatherMap fournit le support pour générer autant de clés API que nécessaire pour vos projets.
Vous êtes maintenant prêt à récupérer les données météo en direct.
# Importer des bibliothèques
importer demandes
importer json# Entrez votre clé API OpenWeatherMap ici
# NE PAS le pousser vers un dépôt public
API_Key = "Votre_clé_API"# Indiquez un nom de ville valide
nom_ville = entrée("Saisissez le nom de la ville: ")# Construire le chemin de l'URL de l'API
URL = f"http://api.openweathermap.org/data/2.5/weather? q={nom_ville}&appid={API_Key}"# Faire une requête get à l'API
réponse = demandes.get (url)# Conversion de la réponse JSON en dictionnaire
res = réponse.json()# Décommentez la ligne suivante pour tout voir
# données extraites de l'API
# impression (rés)# Vérifier si la ville est trouvée
# Si la valeur de "cod" n'est pas 404,
# cela signifie que la ville est trouvée
si res["la morue"] != "404":
données = res["principal"]# Stockage des données de température en direct
température_vivante = données["temp"]# Stockage des données de pression en direct
pression_vivante = données["pression"]
desc = res["temps"]# Stockage de la description météo
description_météo = desc[0]["description"]
imprimer("Température (en échelle Kelvin): " + chaîne (live_temperature))
imprimer("Pression: " + str (live_pressure))
imprimer("Description: " + str (weather_description))
autre:
# Si la ville n'est pas trouvée,
# ce bloc de code sera exécuté
imprimer("Veuillez entrer un nom de ville valide")
Si vous fournissez une clé API valide et entrez le nom de ville correct, vous recevrez les données de l'API au format JSON. Ensuite, vous devez convertir ces données au format JSON en un objet Python en utilisant le json() méthode pour effectuer d'autres opérations. Si la ville est trouvée, vous devrez résoudre l'objet dict (res) pour extraire les informations requises.
Développer une application météo en utilisant les données météo en direct
Maintenant que vous avez appris à récupérer des données en direct à l'aide de l'API OpenWeatherMap, vous êtes prêt à développer une application météo simple en l'utilisant. Construire une application météo peut vous aider à appliquer ce que vous savez et à perfectionner vos compétences en Python.
Se salir les mains sur des projets pratiques peut faire de vous un meilleur développeur. Vous pouvez développer d'autres projets Python comme un système de connexion, une application de quiz ou un raccourcisseur d'URL pour consolider vos compétences en développement Python.