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".
** Holen Sie sich die Wettervorhersage für das Büro in XML, formatieren Sie sie und zeigen Sie sie an. ** ** **
--Finden Sie einen Dienst, der ausreichende Informationen bietet.
Wenn Sie nach "Wettervorhersage API kostenlos" suchen Ich stellte fest, dass die folgenden Dienste vorhanden waren.
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 |
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.
Vielen Dank.