[PYTHON] Formatez et affichez le XML acquis par l'API OpenWeatherMap.

Bonjour, je m'appelle Yoshiya Kato de Quick Italate Co., Ltd. J'écris actuellement un article de blog intitulé "Pourquoi je recommande python pour commencer".

Que veux-tu faire

** Obtenez les prévisions météorologiques du bureau au format XML, mettez-les en forme et affichez-les. ** **

environnement

Considérez les composants.

Candidat au service d'API météo

Si vous recherchez "API de prévisions météo gratuite" J'ai constaté que les services suivants existaient.

Présentation de l'API

OpenWeatherMap est configuré pour que des informations détaillées puissent être obtenues de différentes manières. Je vais l'extraire et en faire une table.

Paramètres sens Exemple de valeur Obligatoire
URL Pour envoyer la demande http://api.openweathermap.org/data/2.5/forcast? Obligatoire
appid Identifiant attribué Obligatoire*1 Obligatoire
name Nom spécifique à la ville tokyo-to option*2
id ID spécifique à la ville(cityid) 1850144 option*2
lat Latitude en notation décimale 35.78 option*2
lon Latitude en notation décimale 139.83 option*2
zip Code postal 1210053 option*2
country Abréviation du nom de pays (lorsque zip est spécifié) jp option*2
unites Unité de notation*1 métrique ou impérial ou aucun option*2
mode Spécifiez le format d'acquisition xml or json or html option*2
Demander une image URL (lors de l'utilisation de Cityid))
http://api.openweathermap.org/data/2.5/forecast?id=1850144&APPID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&units=metric&mode=xml
Image de l'URL de la requête (lors de l'utilisation de la latitude / longitude))
http://api.openweathermap.org/data/2.5/forecast?lon=139.83&lat=35.78&APPID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&units=metric&mode=xml

code python

Maintenant que les informations sont prêtes, j'aimerais utiliser python pour obtenir les informations et les afficher sous forme de XML formaté.

openweathermap.py


#Importer la bibliothèque
import urllib.request
import urllib.parse
import xml.etree.ElementTree as et
import xml.dom.minidom as md
url='http://api.openweathermap.org/data/2.5/forecast?' #Paramètre d'URL de base
query = {
        'id'    : '1850144' ,
        'APPID' : 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', #L'appid que vous avez
        'units'  : 'metric',
        'mode'  : 'xml'}#Groupe de valeurs à définir dans la requête
url = url + urllib.parse.urlencode(query) #Demander la génération d'URL
response = urllib.request.urlopen(url) #demande http
root = et.fromstring(response.read()) #Stocker le contenu récupéré dans l'élément XML

Vérifiez le contenu de l'url utilisée pour la demande.

Vérifiez l'url générée


print(url) #Afficher le contenu de l'url
http://api.openweathermap.org/data/2.5/forecast?id=1850144&APPID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&units=metric&mode=xml

Code pour afficher xml


document = md.parseString(et.tostring(root, 'utf-8')) #le module minidom analyse l'élément XML
print(document.toprettyxml(indent="  ")) #Convertit les informations XML analysées en une chaîne avec indentation et l'affiche

Il s'agit du XML qui est réellement formaté et généré à partir de la valeur renvoyée par la requête.

result.xml


<?xml version="1.0" ?>
<weatherdata>
  <location>
    <name>Tōkyō-to</name>
    <type/>
    <country>JP</country>
    <timezone/>
    <location altitude="0" geobase="geonames" geobaseid="1850144" latitude="35.6895" longitude="139.6917"/>
  </location>
  <credit/>
  <meta>
    <lastupdate/>
    <calctime>0.0129</calctime>
    <nextupdate/>
  </meta>
  <sun rise="2017-06-23T19:26:28" set="2017-06-24T10:00:54"/>
  <forecast>
    <time from="2017-06-24T06:00:00" to="2017-06-24T09:00:00">
      <symbol name="broken clouds" number="803" var="04d"/>
      <precipitation/>
      <windDirection code="SSE" deg="148.001" name="South-southeast"/>
      <windSpeed mps="2.41" name="Light breeze"/>
      <temperature max="24.68" min="23.88" unit="celsius" value="23.88"/>
      <pressure unit="hPa" value="1015.57"/>
      <humidity unit="%" value="66"/>
      <clouds all="56" unit="%" value="broken clouds"/>
    </time>
・ ・ (Omis au milieu) ・ ・
  </forecast>
</weatherdata>

La prochaine fois, j'aimerais extraire et traiter le contenu de XML.

Sites, etc. auxquels j'ai fait référence lors de la rédaction de l'article

Merci beaucoup.

Recommended Posts

Formatez et affichez le XML acquis par l'API OpenWeatherMap.
Exporter le contenu acquis par Twitter Streaming API au format JSON