Ihmettelen kovin koko XML:n tarkoitusta, koska varsinaisen datan sijaan se sisältää suurimmalta osin pelkkää roskaa. Kuinka esimerkiksi saadaan helpoiten talteen lämpötilatiedot tästä linkistä: http://opendata.fmi.fi/wfs/fin?service=WFS&version=2.0.0&request=GetFeature&storedquery_id=fmi::observations::weather::timevaluepair&fmisid=101520&
Ovat siis kätketty tälläiseen, ja tuosta tarvittaisiin vain aikatieto ja arvo. Yksittäisiä arvoja on siis kymmeniä.
<wml2:point><wml2:MeasurementTVP><wml2:time>2019-04-19T00:50:00Z</wml2:time><wml2:value>3.6</wml2:value></wml2:MeasurementTVP></wml2:point>
XML sekamelskan perkaus
7
1279
Vastaukset
Suorita tämä koodi:
var wmlNs = "http://www.opengis.net/waterml/2.0";
var allPoints = document.getElementsByTagNameNS(wmlNs, "point");
var clearData = Array.from(allPoints).map( p=>{
var timeEl = p.getElementsByTagNameNS(wmlNs, "time")[0];
var time = timeEl ? timeEl.textContent : "";
var valueEl = p.getElementsByTagNameNS(wmlNs, "value")[0];
var value = valueEl ? valueEl.textContent : "";
return {time: time, value: value}
});
Nyt sinulla pitäisi olla kaikki 936 arvoa listassa clearData objekteina {time, value}.- Anonyymi
Olen nyt yrittänyt tapella Pythonin ja XPathin kanssa, mutta en ole keksinyt mitä pitäisi laittaa xpathiin. Erroria pukkaa esim. jos yrittää päästä toiseen tasoon saakka, johon pääsin kyllä jsonin kautta pyöräyttämällä myös, mutta siitä ei saanut sitten purettua enempää.
Tämä ei siis toimi:
import requests
from lxml import etree
url = "http://opendata.fmi.fi/wfs/fin?service=WFS&version=2.0.0&request=GetFeature&storedquery_id=fmi::observations::weather::timevaluepair&fmisid=101520&"
data = requests.get(url)
root = etree.XML(data.text.encode("utf-8"))
results = root.xpath("/wfs:FeatureCollection/wfs:member")
Tästä yritin saada apuja: https://lxml.de/xpathxslt.html
Taidan tehdä niin että otan stringinä käsittelyyn ja puran manuaalisesti. On tuo XML kyllä ihme sekamelskaa. - Anonyymi
Anonyymi kirjoitti:
Olen nyt yrittänyt tapella Pythonin ja XPathin kanssa, mutta en ole keksinyt mitä pitäisi laittaa xpathiin. Erroria pukkaa esim. jos yrittää päästä toiseen tasoon saakka, johon pääsin kyllä jsonin kautta pyöräyttämällä myös, mutta siitä ei saanut sitten purettua enempää.
Tämä ei siis toimi:
import requests
from lxml import etree
url = "http://opendata.fmi.fi/wfs/fin?service=WFS&version=2.0.0&request=GetFeature&storedquery_id=fmi::observations::weather::timevaluepair&fmisid=101520&"
data = requests.get(url)
root = etree.XML(data.text.encode("utf-8"))
results = root.xpath("/wfs:FeatureCollection/wfs:member")
Tästä yritin saada apuja: https://lxml.de/xpathxslt.html
Taidan tehdä niin että otan stringinä käsittelyyn ja puran manuaalisesti. On tuo XML kyllä ihme sekamelskaa.TÄSSÄ PYTHON3 MALLIA
Korvaa ??? tiedoston osoitteella.
from xml.dom import minidom
import urllib.request
url = 'http://???'
urllib.request.urlretrieve(url, "data.xml")
mydoc = minidom.parse('data.xml')
items = mydoc.getElementsByTagName('wml2:time')
i=0
for x in items:
print(str(i) ": " items[i].lastChild.data)
i=i 1
Testaa tämä. - Anonyymi
Anonyymi kirjoitti:
TÄSSÄ PYTHON3 MALLIA
Korvaa ??? tiedoston osoitteella.
from xml.dom import minidom
import urllib.request
url = 'http://???'
urllib.request.urlretrieve(url, "data.xml")
mydoc = minidom.parse('data.xml')
items = mydoc.getElementsByTagName('wml2:time')
i=0
for x in items:
print(str(i) ": " items[i].lastChild.data)
i=i 1
Testaa tämä.Tuo on ihan lupaava lähtökohta, koska tulostaa kaikki ajat kuten pitääkin. Pitäisi vielä se mittausarvo ympätä tuohon.
- Anonyymi
Anonyymi kirjoitti:
Tuo on ihan lupaava lähtökohta, koska tulostaa kaikki ajat kuten pitääkin. Pitäisi vielä se mittausarvo ympätä tuohon.
Arvot mukaan vaikka näin:
from xml.dom import minidom
import urllib.request
url = ???'
urllib.request.urlretrieve(url, "data.xml")
mydoc = minidom.parse('data.xml')
times = mydoc.getElementsByTagName('wml2:time')
values = mydoc.getElementsByTagName('wml2:value')
i=0
for x in times:
print(str(i) ": " times[i].lastChild.data \
" " values[i].lastChild.data)
i=i 1 - Anonyymi
Anonyymi kirjoitti:
Arvot mukaan vaikka näin:
from xml.dom import minidom
import urllib.request
url = ???'
urllib.request.urlretrieve(url, "data.xml")
mydoc = minidom.parse('data.xml')
times = mydoc.getElementsByTagName('wml2:time')
values = mydoc.getElementsByTagName('wml2:value')
i=0
for x in times:
print(str(i) ": " times[i].lastChild.data \
" " values[i].lastChild.data)
i=i 1Kiitokset! Nyt ymmärsin tuon logiikan. Hämäsi hieman tuo käyttämäsi for-lauseke.
Ketjusta on poistettu 1 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Me työeläkeläiset äänestämme SDP:tä
SDP on luonut koko työeläkejärjestelmän, jonka hedelmistä saamme nyt nauttia. Kansaneläkelaitos on Maalaisliiton tekele,1504877Eikö tunnukin kamalalta, kun en
anna periksi vaikka parhaasi olet tehnyt antaaksesi täystyrmäyksen? Ja kyllähän minä monta iskua olen saanut ja maannut813556SDP on selvästi paras valinta äänestyskopissa
Puolueella on arvomaailma kohdallaan, sillä on hyvä CV itsenäisen Suomen historiassa vastuunkantajana ja hyvinvointivalt312553SDP:n selitykset ontuu pahasti - "On käsitelty heti, mutta kukaan ei tiedä"
Kokoomuslaiset pistää taas demareita nippuun. Tuppuraisen mukaan mukaan SDP:n useat ahdistelutapaukset on käsitelty het402223Kenen juontajan pitäisi voittaa tänään Kultainen Venla? Ehdolla Pimiä, Holma ja Vaaherkumpu
Kultainen Venla gaalassa jaetaan tänään tv-alan palkintoja. Yksi suosituimmista kategorioista on Juontaja. Vappu Pimiä722073Antti Lindtman: "Ainahan kaikenlaisia huhuja liikkuu"
Näin hän siis vastaa SDP:n häirintäkohuun, väistelee vastuutaan Juttuhan on niin, että Lindtman ja Tuppurainen on tasan632013Mitä saa sanoa?
Palstalla tänään sanottua: ” Kaikki riippuu siitä, miten asian esittää,” Onko siis niin, että saa muita pomottaa ja851983Oletko nainen turhautunut, kun en tule juttelemaan siellä?
Haluaisin tottakai tulla. Älä käsitä väärin. Ehkä ensi kerralla?231981Onko olemassa miehiä, jotka haluavat yhteydenpitoa?
Silloin tällöin viestiä, puntarointeja arkielämästä, ikäänkuin pientä viihdettä ilman sen kummallisempaa. Tällaista miet191458Mitä Trump itse pitäisi siitä, jos häntä solvattaisiin
Kuten hän solvasi muita mm. Macronia? Kyllä ei huumori enää kukkisi. White house on nykyään pelkkä vitsi vain, ei mitään991262