Mit Webscraping Daten von Webseiten auslesen und in Home Assistant nutzen

@olli Danke, es ist so das es die lokale IP sein muss, das dort ein Webserver läuft der meine Blutzuckerwerte sendet.

Scheinbar geht es nicht.

@olli Hallo, nachdem ich jetzt die Solarleistung einige Tage verfolgen stelle ich fest, das der Wert ab 1000 W nur noch 1 W angezeigt wird. Es könnte daran liegen, dass der Wert mit Punkt hinter der 1 dargestellt wird also z.B. 1.250 W.

Kann man das auch mit Scape filtern?

Hallo @werner2000x !

Sorry für die späte Antwort! 

Passe den Code bei Wert-Template wie folgt an und es sollte auch für Tausender-Werte mit . klappen:

{{ value.split(',')[0].split('+')[1][:-1].replace('.','') }}

Sonst gerne wieder melden :slight_smile:

VG Olli

Hej,
Hab mit Hilfe deines Videos Daten für den aktuellen Strompreis gescrapt. Funktioniert auch soweit sehr gut. Nur sobald ich eine Maßeinheit angebe, selbst wenn ich von den vorgegeben eine nehme ( °C, K, etc.), bekomme ich keine Daten mehr.
Es geht ja auch irgendwie über Werte-Templates aber davon habe ich leider keine Ahnung..
Hast du / Ihr eine Idee wo dran es liegen kann?
Ich versuche von dieser Webseite den Tagespreis und den Preis für Morgen auszulesen. Der Preis für Morgen kommt mit Maßeinheit da dieser eine Einheit mit dem Preis ist.

Sorry für die später Antwort, hier geht die Erkältungswelle um…

Kann es sein, dass der gescrapte Wert ein String ist und deswegen keine der Maßeinheiten akzeptiert?

Bin leider nicht Vertraut mit HTML aber ich denke nicht….

Teile gerne mal die konkrete URL, dann schaue ich mir das an.

Hej Olli,
Ich dachte ich hätte den Link oben bereits mit beigefügt…..Schande auf mein Haupt. :see_no_evil_monkey:
https://www.elbruk.se/timpriser-se3-stockholm

Kannst du mir deinen CSS-Selektor noch geben, den du nutzt um Werte von der Seite zu scrapen?

Ja klar.
Das ist der Selektor den ich eingetragen habe:
body > div.wrapper > div.content.bg-navy > div > div:nth-child(1) > div:nth-child(2) > div > div.info-box-content > span.info-box-number

Danke!

Wie vermutet, ist der Wert ein String, den man nicht ohne weiteres als Float (was es für eine Maßeinheit sein muss) nutzen kann:

Trage als Wert-Template bspw. folgenden Code ein:

{{ value | regex_findall('[0-9,]+') | first | default('') | replace(',','.') | float }}

Im Verlauf des Sensors wirst du feststellen, dass dieser zuerst als Wert 52,42 hatte und nach der Anpassung dann 52.42 (also Punkt statt Komma), was aus Datensicht zum Float passt. Somit sollte es passen, sonst erneut melden! :wink:

VG Olli

Hej Olli,

Vielen, vielen Dank für deine Mühe, das funktioniert so. :+1:
Viele Grüße
Ingo

1 „Gefällt mir“