[PYTHON] Formatieren und anzeigen Sie das von der OpenWeatherMap-API erfasste XML.

Hallo, ich heiße Yoshiya Kato von Quick Italate Co., Ltd. Ich schreibe gerade einen Blog-Beitrag mit dem Titel "Warum ich Python empfehle, um loszulegen".

Was willst du tun

** Holen Sie sich die Wettervorhersage für das Büro in XML, formatieren Sie sie und zeigen Sie sie an. ** ** **

Umgebung

Betrachten Sie die Komponenten.

--Finden Sie einen Dienst, der ausreichende Informationen bietet.

Kandidat für den Wetter-API-Service

Wenn Sie nach "Wettervorhersage API kostenlos" suchen Ich stellte fest, dass die folgenden Dienste vorhanden waren.

API-Übersicht

OpenWeatherMap ist so konfiguriert, dass detaillierte Informationen auf verschiedene Arten abgerufen werden können. Ich werde es extrahieren und daraus eine Tabelle machen.

Parameter Bedeutung Wertbeispiel Verpflichtend
URL Um die Anfrage zu senden http://api.openweathermap.org/data/2.5/forcast? Verpflichtend
appid Zugewiesene ID Verpflichtend*1 Verpflichtend
name Stadtspezifischer Name tokyo-to Möglichkeit*2
id Stadtspezifische ID(cityid) 1850144 Möglichkeit*2
lat Breitengrad in Dezimalschreibweise 35.78 Möglichkeit*2
lon Breitengrad in Dezimalschreibweise 139.83 Möglichkeit*2
zip Postleitzahl 1210053 Möglichkeit*2
country Abkürzung für den Ländernamen (wenn die Postleitzahl angegeben ist) jp Möglichkeit*2
unites Notationseinheit*1 metrisch oder imperial oder keine Möglichkeit*2
mode Geben Sie das Erfassungsformat an xml or json or html Möglichkeit*2
URL-Bild anfordern (bei Verwendung von Cityid))
http://api.openweathermap.org/data/2.5/forecast?id=1850144&APPID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&units=metric&mode=xml
Bild der Anforderungs-URL (bei Verwendung von Längen- und Breitengrad))
http://api.openweathermap.org/data/2.5/forecast?lon=139.83&lat=35.78&APPID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&units=metric&mode=xml

Python-Code

Nachdem die Informationen fertig sind, möchte ich Python verwenden, um die Informationen abzurufen und in Form von formatiertem XML anzuzeigen.

openweathermap.py


#Bibliothek importieren
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?' #Basis-URL-Einstellung
query = {
        'id'    : '1850144' ,
        'APPID' : 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', #Der Appid, den du hast
        'units'  : 'metric',
        'mode'  : 'xml'}#Wertgruppe, die in der Abfrage festgelegt werden soll
url = url + urllib.parse.urlencode(query) #URL-Generierung anfordern
response = urllib.request.urlopen(url) #http Anfrage
root = et.fromstring(response.read()) #Speichern Sie den abgerufenen Inhalt in XML Element

Überprüfen Sie den Inhalt der für die Anforderung verwendeten URL.

Überprüfen Sie die generierte URL


print(url) #Zeige den Inhalt der URL
http://api.openweathermap.org/data/2.5/forecast?id=1850144&APPID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&units=metric&mode=xml

Code zum Anzeigen von XML


document = md.parseString(et.tostring(root, 'utf-8')) #Das Minidom-Modul analysiert das XML-Element
print(document.toprettyxml(indent="  ")) #Konvertiert analysierte XML-Informationen in eine Zeichenfolge mit Einzug und zeigt sie an

Dies ist das XML, das tatsächlich formatiert und aus dem von der Anforderung zurückgegebenen Wert ausgegeben wird.

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>
・ ・ (In der Mitte weggelassen) ・ ・
  </forecast>
</weatherdata>

Nächstes Mal möchte ich den Inhalt von XML extrahieren und verarbeiten.

Websites usw., auf die ich beim Schreiben des Artikels verwiesen habe

Vielen Dank.

Recommended Posts

Formatieren und anzeigen Sie das von der OpenWeatherMap-API erfasste XML.
Exportieren Sie die von der Twitter Streaming API erfassten Inhalte im JSON-Format