Seite 1 von 1

Hilfestellung für totalen Anfänger

Verfasst: Mittwoch 5. Oktober 2022, 12:56
von randomdude
Hi!

Ich bin wirklich neu, was Python angeht, und stolpere natürlich gleich bei meinem ersten "Projekt" über ein für mich irgendwie nicht lösbares Problem :oops:

Auf meinem Raspberry Pi, auf dem Home Assistant grundsätzlich läuft, habe ich gemäß dieser Anleitung Python "zum Laufen" gekriegt: https://smarterkram.de/2524/ Grundsätzlich funktioniert Python bei mir, da ein einfaches "hello world" klappt ;)

Nun möchte ich von einer "fremden" Webseite ein JSON auslesen und die Inhalte nutzen. Hierfür habe ich folgenden Code

Code: Alles auswählen

import requests


r = requests.get('eine.domain/act.json')
resp = resp.json()
Ich habe nun schon zahlreiche Dinge versucht, aber "resp" bleibt leer, obwohl unter der echten URL (also statt "eine.domain...") die Datei act.json aufrufbar ist.

Ich bin um jede Hilfe - und wenn es nur ein Hinweis oder eine Idee ist - super dankbar!!!

Re: Hilfestellung für totalen Anfänger

Verfasst: Mittwoch 5. Oktober 2022, 15:39
von noisefloor
Hallo,

der Code kann so nicht funktionieren, weil `resp.json()` an der Stelle nicht definiert ist. Da muss bei dir wenn `r.json()` stehen.

Was wird denn ausgegeben, wenn du nach der Zeile `r = requests(...)` eine Zeile `print(r)` einfügst.

Und du gibst doch wirklich eine komplette URL ein, also inkl. https:// , oder?

Gruß, noisefloor

Re: Hilfestellung für totalen Anfänger

Verfasst: Mittwoch 5. Oktober 2022, 18:17
von __blackjack__
Ergänzend: Das sollte weder `r` noch `resp` heissen, sondern `response`. Bitte Namen nicht irgendwie kryptisch abkürzen.

Und es macht auch immer Sinn zu prüfen ob die Antwort vom Server keine HTTP-Fehlermeldung war. `Response`-Objekte haben dafür eine praktische `raise_for_status()`-Methode.

Und `resp` oder wie auch immer das heissen mag kann auch nicht „leer“ sein, denn die `json()`-Methode liefert immer einen Wert oder löst eine Ausnahme aus. Oder wie ist ”leer” hier definiert?