XML Daten von IP-Adresse auslesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Chrissili
User
Beiträge: 42
Registriert: Sonntag 22. Januar 2023, 10:09

Hallo, leider bin ich noch relativ am Anfang und würde mich freuen wenn mir jemand helfen kann.
Habe mit Import webbrowser oder Import urllib schon probiert ein Homematic TemperaturSensor anzusteuern, dessen Wert ich ja über zB. 192.168.178.22:8181/alchy.exe?sagt=dom.GetObject(... Temperatur).Value() bekomme.

Aber irgendwie klappt es nicht so recht...

Wie kann ich diesen XML Wert am saubersten abgreifen?

Wäre über Tipps sehr dankbar
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bitte den Code zeigen, und konkrete Fehlermeldungen und Dokumentation. Code und Fehler in Code Tags setzen.
Chrissili
User
Beiträge: 42
Registriert: Sonntag 22. Januar 2023, 10:09

Der Code ist ja sehr rudimentär und womöglich falsch... hat nicht jemand schon mal was ähnliches gemacht und kann mir den Code grob zur Verfügung stellen?
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Woher sollen wir denn wissen, was nicht so recht klappt.
Mehr als in der Dokumentation (https://docs.python.org/3/library/urlli ... l#examples) schon steht, kann man ja da nicht schreiben. Dann kommt es darauf an, was konkret die Webseite an Daten leifert. Niemand weiß hier, wie das aussieht, und was Du damit machen willst.
Chrissili
User
Beiträge: 42
Registriert: Sonntag 22. Januar 2023, 10:09

Es steht AttributeError: Module 'urllib' Has no Attribute 'urlopen'... kann man denn als URL nicht 192.168.178.22:8181 verwenden? Solche Beispiele hab ich nirgends gesehen
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn Du das Beispiel aus der Dokumentation liest, sollte doch klar sein, was Du anders machst:

Code: Alles auswählen

import urllib.request
with urllib.request.urlopen('http://www.python.org/') as f:
    print(f.read(300))
Chrissili
User
Beiträge: 42
Registriert: Sonntag 22. Januar 2023, 10:09

Ah cool jetzt klappts - wie wäre denn die XML-Syntax um etwas spezielles aus den <> </> auszulesen?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mit dem eingebauten ElementTree-Modul. Tutorial findet sich hier: https://docs.python.org/3/library/xml.e ... ttree.html
Chrissili
User
Beiträge: 42
Registriert: Sonntag 22. Januar 2023, 10:09

Sorry wenn ich nochmal nachfrage, mit print(f.read(150).decode('utf-8')) bekomme ich genau den Teil <xml> .... </xml> den ich brauche... aber wie kann ich da wiederum genau zugreifen? Hab das XML Tutorial versucht zu verstehen, aber ich kann diesen "Output" ja nicht mal einer Variable zuweisen, da es dann den Wert None aufweist...
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Dir fehlen noch wichtige Grundlagen von Python. `print` gibt einen Wert aus, liefert aber als Rückgabewert nichts (also None). Wenn Du also den Wert weiterverarbeiten willst, mußt Du den read-Ausdruck einer Variable zuweisen.
Chrissili
User
Beiträge: 42
Registriert: Sonntag 22. Januar 2023, 10:09

Ok danke verstanden
Antworten