Bekomme per Scrape nicht die Daten

Ich probiere gerade, den Ölpreis über ein Scrape auszulesen.

Er zeigt mir dann aber nur Unbekannt an.

Die Resource ist:
https://energieshop.totalenergies.de/bestellung/?zip_code=68309&quantity=2000&submitButton=Preis+berechnen&num_deliveries=1

Unter auswählen habe ich für das Öl Premium thermoplus:
#tns1-item0

Hat da jemand noch eine Idee, was ich da falsch mache?

EDIT:
ich sehe gerade ich bekomm ein Logeintrag dazu:

Failed to set state for sensor.olpreis, fall back to unknown

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1227, in _async_write_ha_state
    hass.states.async_set_internal(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        entity_id,
        ^^^^^^^^^^
    ...<5 lines>...
        time_now,
        ^^^^^^^^^
    )
    ^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2364, in async_set_internal
    state = State(
        entity_id,
    ...<8 lines>...
        timestamp,
    )
  File "/usr/src/homeassistant/homeassistant/core.py", line 1808, in __init__
    validate_state(state)
    ~~~~~~~~~~~~~~^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 237, in validate_state
    raise InvalidStateError(
    ...<2 lines>...
    )
homeassistant.exceptions.InvalidStateError: Invalid state with length 2276. State max length is 255 characters.

Also ich verstehe, dass hier die Länge wohl zu lang ist, aber das passt ja irgendwie nicht zu dem Preis.

Wie sieht denn Dein CSS-Pfad dafür aus?

Wenn ich diesen hier nehme, scheint es zu funtionieren.

html body main section section div.stage-order div.container-semiFull.container-cards.bg-canvas div.container.canvas-overlay.gradient-10-red div.tabs-tariff-cards-inner div.slider-holder div.tariffCardSlider div#tns1-item0.item-tariff-card.g-col-12.g-col-md-4.g-col-xl-3.tns-item.tns-slide-active div.tariff-card.recommended.border-red div.card.d-flex div.card-head div.text-gradient.gradient-text-red div.h1

Vielen Dank für die Antwort und die Hilfe.

Aber jetzt steh ich irgendwie etwas auf dem Schlauch.

Ich habe aktuell keinen CSS Pfad

Bei mir sieht es aktuell so aus:

Wo muss ich denn der CSS Pfad dann rein?

Achso und auch noch eine wichtige Frage, wo wie hast du den CSS Pfad herausgefunden?

Die Stelle im Formular ist schon richtig.
Dort wo bei Dir “#tns1-item0” steht, muss der CSS-Tag des gesuchtes Wertes rein.
Da diese Tags auf öfter vorkommen können, fügts Du das den gesamten CSS-Pfad ein.

Den bekommst Du über die Developer Tools Deines Browsers raus. Meist mit F12 zu öffnen.
Unter Firefox muss man den Wert markieren, dann in den Tools einen rechtsklick auf dem Tag machen und Kopieren → CSS-Pfad auswählen. In Chrome geht das bestimmt auch ähnlich.

So klappt das jedenfalls meist bei mir.

ok, ich habs mit Chrom probiert, aber da finde ich css-Pfad nicht. Aber ich hab auch Firefox. Damit hab ich jetzt auf jedenfall mal den gleichen wert wie du “herausgefunden”.

Problem ist jetzt aber, auch wenn ich diesen Wert

html body main section section div.stage-order div.container-semiFull.container-cards.bg-canvas div.container.canvas-overlay.gradient-10-red div.tabs-tariff-cards-inner div.slider-holder div#tns1-ow.tns-outer div#tns1-mw.tns-ovh div#tns1-iw.tns-inner div#tns1.tariffCardSlider.tns-slider.tns-carousel.tns-subpixel.tns-calc.tns-horizontal div#tns1-item0.item-tariff-card.g-col-12.g-col-md-4.g-col-xl-3.tns-item.tns-slide-active div.tariff-card.recommended.border-red div.card.d-flex div.card-head div.text-gradient.gradient-text-red div.h1

komplett bei Auswählen einfüge steht der Sensor auf unbekannt:

Bildschirmfoto 2025-01-05 um 20.19.32

Hast du vielleicht etwas bei der Resource etwas anders gemacht?

Nö, bei der Ressouce die URL der Webseite, und bei Auswählen den CSS-Pfad eintragen.

Was anderes hab ich auch nicht gemacht.

das ist jetzt echt merkwürdig.

Habs jetzt noch einmal komplett neu gemacht:

Resource

https://energieshop.totalenergies.de/bestellung/?zip_code=68309&quantity=2000&submitButton=Preis+berechnen&num_deliveries=1

Auswählen

html body main section section div.stage-order div.container-semiFull.container-cards.bg-canvas div.container.canvas-overlay.gradient-10-red div.tabs-tariff-cards-inner div.slider-holder div#tns1-ow.tns-outer div#tns1-mw.tns-ovh div#tns1-iw.tns-inner div#tns1.tariffCardSlider.tns-slider.tns-carousel.tns-subpixel.tns-calc.tns-horizontal div#tns1-item0.item-tariff-card.g-col-12.g-col-md-4.g-col-xl-3.tns-item.tns-slide-active div.tariff-card.recommended.border-red div.card.d-flex div.card-head div.text-gradient.gradient-text-red div.h1

Und es kommt trotzdem Unbekannt :disappointed:

@kofax hast du denn auch schon das HA Update auf 2025.1.0 gemacht? Weil nicht, dass es daran hängt.

Ich kopiere immer den selector nicht den Pfad damit funktioniert es bei mir:

#tns1-item0 > div > div > div.card-head > div > div

Versuch das mal :slight_smile:

1 „Gefällt mir“

Ich habe die Erfahrung gemacht, dass sich nicht alles aus jeder Seite auslesen lässt. Für meine Pellets habe ich drei verschiedene Seiten probiert, ehe ich auch tatsächlich Daten auslesen konnte.

Ferner meine ich, die Daten unter “Auswählen” sind nicht richtig. Sieht bei mir, allerdings andere Webseite, anders aus…

jetzt bin ich echt total verwirrt ich hatte es am Anfang eigentlich genau mit dem von dir geposteten Teil probiert, da es nicht geklalppt hatte, hatte ich alles hinter item0 entfernt.

Hab jetzt noch einmal deinen Code genommen jetzt kommt tatsächlich der Wert raus.

Keine Ahnung warum es dann beim allerersten mal nicht funktioniert hat.

Vielen Dank.

Jetzt habe ich hierzu noch eine Frage. Der Scrape läuft ja jetzt.

Aber wenn ich den Sensor jetzt in mit folgendem Code als Liniendiagramm ausgeben möchte:

graph: line
type: sensor
entity: sensor.olpreis

bekomme ich die Meldung “no state history found”.

Bekomme ich das irgendwie hin, dass ich auch ein Liniendiagramm ausgeben kann?

Hast Du den Sensor auch im “RECORDER”? Sonst hast Du ja nur den einen, einzelnen, Wert.

Diesbezüglich habe ich beim Recorver eigentlich nichts ausgeschlossen:

recorder:
  exclude:
    entity_globs:
      - sensor.mlb_*
      - sensor.nfl_*
      - sensor.nhl_*
      - sensor.nba_*
      - sensor.flightradar24*

Ich sehe auch wenn ich den Sensor aufrufe mehr daten:

EDIT
Jetzt wird es ganz seltsam, wenn ich es mit custom:apexcharts-card anzeigen lassen bekomme ich sogar Daten:

type: custom:apexcharts-card
header:
  show: false
  show_states: true
graph_span: 3d
span:
  end: day
series:
  - entity: sensor.olpreis

(Beitrag vom Verfasser gelöscht)