Webseiten-Inhalte scrapen und in Home Assistant nutzen

Wie kann man Webseiten-Inhalte scrapen und in Home Assistant nutzen? Hier erfรคhrst du alles dazu inklusive Beispielcodes!

Ich habe ja in einem anderen Beitrag bereits รผber die Mรถglichkeit geschrieben sich Inhalte von anderen Webseiten via Iframe in Home Assistant anzeigen lassen zu kรถnnen. Ganz ehrlich finde ich diese Mรถglichkeit aber definitiv nicht schรถn und auch nur bedingt zielfรผhrend. Man kann zwar Daten einbinden und anzeigen, aber wirklich mit den Daten arbeiten und diese nutzen, kann man leider nicht.

In einem Beitrag habe ich beschrieben, wie ich bislang die DHL Packstation PIN mit PHP automatisch aus der Benachrichtigungs-E-Mail auslesen und dann in Home Assistant anzeige. Da ich nun aber gerne mit der PIN noch weiteres machen wรผrde (zum Beispiel eine Push-Notification an mein Handy oder die PIN auf meiner Lametric anzeigen), habe ich mich ganz aktuell mit der Mรถglichkeit befasst Webseiten-Inhalte mit Home Assistant zu scrapen (Wikipedia: Scrapen).

Webseiten-Inhalte scrapen und in Home Assistant nutzen

Beim Scrapen durchforstet eine Anwendung beispielsweise eine bestimmte Webseiten-URL und liest die in/auf dieser Webseite enthaltenen Daten aus. Anhand von definierten Regeln kann man dann festlegen wie der Scraper mit den Daten umgehen soll. Zum Beispiel kann kann man ganz konkrete Textbausteine suchen und Text unmittelbar davor oder danach ausgeben lassen.

Theoretisch kรถnnte man die Seite Spiegel.de tรคglich einmal scrapen und die Inhalte beziehungsweise Nachrichten dann auf seiner eigenen Webseite ausgeben (das ist natรผrlich wenig kreativ und auch nicht vernรผnftig, aber es beschreibt vermutlich ganz gut, was mit Scrapen mรถglich ist).

Wie so oft, bietet auch Home Assistant eine einfache Mรถglichkeit um einen Mini-Scraper aufzusetzen und Daten von einer beliebigen Webseite/URL einzulesen: Scrape Integration

Beispielhafter Code:ย Webseiten-Inhalte scrapen und in Home Assistant nutzen

sensor:
  - platform: scrape
    resource: https://deine.url/
    select: ".DHL-PIN"
    name: dhlpin
    authentication: basic
    username: htaccess-user
    password: htaccess-passwort
  - platform: scrape
    resource: https://deine.url/
    select: ".DHL-DATE"
    name: dhldate
    authentication: basic
    username: htaccess-user
    password: htaccess-passwort

Mein DHL Packstation Script habe ich nun entsprechend umgebaut beziehungsweise optimiert: Anstelle die aktuellste PIN รผber ein Iframe in meinem Lovelace-Dashboard anzuzeigen, kann ich nun den Sensor sensor.dhlpin direkt in Lovelace einbinden und spare mir den ganzen anderen „HTML-Quatsch“.

Damit der Home Assistant Scraper die PIN eindeutig identifizieren kann, habe ich die zu scrapende Seite wie folgt angepasst:

<div class='DHL-DATE'>23.05. 10:55:57</div>
<div class='DHL-PIN'>9394</div>

Sowohl das Datum der DHL-Mail als auch die eigentliche PIN habe ich jeweils in ein eigenes DIV gepackt und diesen DIVs eindeutige Klassen zugewiesen. Nach diesen Klassen sucht der Home Assistant Scraper und findet somit in jedem Fall sowohl die aktuelle DHL-Pin, als auch das Datum und die Uhrzeit wann DHL mir diese PIN geschickt hat.

Nach ein wenig Warten, konnte ich dann die aktuellen Werte in Home Assistant als Sensoren sehen:

Home Assistant Scrape Sensor

 

Dieser Beitrag ist Teil einer kleinen Beitrags-Serie rund um den hass.io Home Assistant.

2 Gedanken zu „Webseiten-Inhalte scrapen und in Home Assistant nutzen“

  1. Hallo,
    Du werwendest in Deinem Beispiel dhlpin und und dhldate.
    Woher weiรŸ ich aber welche Datem mir die Webseite รผberhaupt รผberwelche „Variable“ zur Verfรผgung stellt?
    Kann ich diese informationen รผberhaupt unabhรคngig erkennen oder muss ich den Webseiten Eigentรผmer dazu kontaktieren?

    GruรŸ
    Frank

    Antworten
    • Hi Frank!
      Hierfรผr musst du die denn sog. Quellcode einer Webseite anschauen. Ich mache dies am liebsten mit Chrome und dann der Option „Untersuchen“, wenn du einen Rechtsklick auf den gewรผnschten Wert macht. Im sich dann รถffnenden Quellcode, muss man dann bspw. nach der dazugehรถrigen CSS-Klasse (Class) suchen.

      Webseitenbetreiber hinterlegen solche Daten in der Regel nicht als Variablen (was es aber auch geben kann!), sondern man muss sich einen bestรคndigen Marker suchen, mit welchem sich die gewรผnschten Daten finden lassen kรถnnen. Falls das fรผr dich komplettes Neuland ist, hilft dir vielleicht folgender Link weiter: https://ingo-janssen.de/web-scraping-in-5-schritten-automatisiert-daten-sammeln/#kenne-deine-daten

      Viel Erfolg und viel SpaรŸ! ๐Ÿ™‚
      Olli

      Antworten

Schreibe einen Kommentar