Hotel Preise auslesen mit Scrape

Hi,
ich oute mich mal als HA Newbie und habe mich mal mit dem scrapen von Webseiten beschäftigt.
Das Beispielvideo von Simon (Join the Community) habe ich auch hinbekommen.
So wie es aussieht, ist mein Anliegen aber so nicht realisierbar.
Was möchte ich tun.
Auf einer Hotelseite möchte ich nach Eingabe der Reisedaten den Zimmerpreis (für HP) auslesen.
Alles ohne Erfolg. Nur wenn ich auf der Startseite ein Feld auswähle, bekomme ich einen “Zustand” zurück.
Ich vermute, dass innerhalb der Buchungsseite die Daten über oData oder als JSON direkt geliefert werden und somit der Scraper nicht funktioniert.
Hier meine Versuche…Nur bei dem “sensor.hotel_leman_startseite_al_home_html” bekomme ich Daten zurück.
Vielleicht hat jemand eine Idee. Gerne auch außerhalb von HA, falls es darüber nicht geht.
Meine YAML Einträge/Versuche:

scrape:
  - resource: https://www.home-assistant.io
    sensor:
      - name: "Join the Community"
        select: "body > div > div.grid-wrapper > div > div > article > div > div > div:nth-child(1) > div:nth-child(7) > h1"
  - resource: https://www.hotel-leman.com/AL/home.html
    sensor:
      - name: "Hotel Leman Startseite AL/home.html"
        select: "body > main > div.tpl-intro-lum.sta-centerText.sta-pretitleNone > div.sta-intro-lum > div > div.mic-title-lum.sta-intro-lum_title"
  - resource: https://www.hotel-leman.com/AL/disponibilidad.html?id_hotel=SYN1628&start=2025-05-31&end=2025-06-05&guests[0][adults]=2#monoHotelAvail/EUR
    sensor:
      - name: "Hotel Leman Preise HP1"
        select: "#td-d1-confirm-price-00"
  - resource: https://www.hotel-leman.com/AL/disponibilidad.html?id_hotel=SYN1628&start=2025-05-31&end=2025-06-05&guests[0][adults]=2#monoHotelAvail/EUR
    sensor:
      - name: "Hotel Leman Preise HP2"
        select: "#td-d1-confirm-price-00 > span.c0446"
  - resource: https://www.hotel-leman.com/AL/disponibilidad.html?id_hotel=SYN1628&start=2025-05-31&end=2025-06-05&guests[0][adults]=2#monoHotelAvail/EUR
    sensor:
      - name: "Hotel Leman Preise HP3"
        select: "#root > div > div.c0217 > div > div.c0395 > div > div.c0388 > div > span"

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)

Richtig, die Daten werden von einem externem Buchungssystem im JSON-Format abgerufen. Du musst aus der normalen Seite die URL friemeln, weil diese eine individuelle Transaction-ID enthält, ohne die das Buchungssystem keine Daten ausliefert und dann kannst Du Dir Daten einfach im JSON-Format abgreifen:

https://dispo.booking-channel.com/api/availability?q=date:2025-05-31,stay_length:5,channel:Web,checkin_days:1,country:DE,source:wg,occups:(3-2),childs_info:(),refundability:all,daily_details:true,hotels:1628,transaction_id:f147dbc4-61bb-40a0-b7a5-11dbf61e4ce1

@harryp: Danke für das Umformatieren.

@HA-1 : Diese URL hat mein Kumpel (hat wesentlich bessere Developer Skills) auch entdeckt. Wenn ich sie aber aufrufe, kommt eine Fehlermeldung.
Hast du eine Idee, wie ich sie verwenden/verarbeiten kann?

Wie ich schon geschrieben habe: In dem Aufruf des Buchungssystems ist eine individuelle Transaction-Id enthalten. Die ist mutmaßlich an die IP-Adresse und möglicherweise noch weitere Parameter wie den User-Agent des Browsers geknüpft. Wenn die Transaction-ID nicht zur IP und ggf. weiteren Merkmalen passt, wertet das Buchungssystem das als Versuch, irregulär Daten abzugreifen (was es ja auch ist) und verweigert die Daten.

Mit STRG+SHIFT+I kannst Du die Developer-Konsole Deines Browsers öffnen. Da kannst Du unter Netzwerk sehen, was Dein Browser macht. Da musst Du Dich rückwärts vorarbeiten. Du siehst da, dass die Schnittstelle mit den Preisen vom Script https://www.hotel-leman.com/igm/synergycms_avail/build/static/js/main.js?_=2504231552 aufgerufen wird. Da musst Du Dir den Code angucken, wo die Transaction-ID her kommt, bzw. wie sie gebaut wird. Das braucht ggf. Javascript-Kenntnisse.

Ein anderer technischer Ansatz: Automatisiert einen Screenshot der fertig gerenderten Website bauen und dann mit einer OCR-Texterkennung die gewünschten Daten rausfriemeln. Für sowas gibt es auch kommerzielle Anbieter.