ioBroker: Daten aus Webseiten mit Parser und Regex extrahieren

Mit dem „Parser“-Adapter und ein paar Zeilen Regex-Code kannst du ganz einfach Daten aus anderen Websiten extrahieren. Der „Parser“ öffnet eine Website, liest deren Quellext und durchsucht diesen nach deinem definierten Regex-Ausdruck.

Was ist Regex?

Vereinfacht kann man sagen, Regex („regular expresisons), also reguläre Ausdrücke, entsprechen einer allgemeinen Suche, nur dass Sie eine Vielzahl an Möglichkeiten besitzen. Mit RegEx suchst du nicht nur nach Wörtern, sondern nach Zeichen und Zeichenketten.

Quelltext der Website öffnen

Damit der „Parser“ weiß, welchen Bereich er extrahieren extrahieren soll, musst du zuerst auf der Ziel-Website den Quelltext öffnen. Als Beispiel kannst du die Startseite von machs-smart.de verwenden und den Titel des neusten Blog-Eintrags auslesen. Klicke mit der rechten Maustaste auf den Titel des neusten Eintrags und wähle „Element untersuchen“:

Mit dem "Parser"-Adapter und ein paar Zeilen Regex-Code kannst du ganz einfach Daten aus anderen Websiten extrahieren. Der "Parser" öffnet eine Website, liest deren Quellext und durchsucht diesen nach deinem definierten Regex-Ausdruck.

Anschließend öffnet sich die Entwickler-Leiste und der Quelltext des ausgewählten Elements:

Mit dem "Parser"-Adapter und ein paar Zeilen Regex-Code kannst du ganz einfach Daten aus anderen Websiten extrahieren. Der "Parser" öffnet eine Website, liest deren Quellext und durchsucht diesen nach deinem definierten Regex-Ausdruck.

Als wiederkehrendes Element für die Regex-Suche eignet sich hier das folgende HMTL-Headline-Tag, denn dieses wird um jeden Titel auf der Startseite gelegt. Es ist außerdem durch die „class“-Definition einzigartiger, als das „<a>“- oder „<span>“-Tag:

<h3 class="preview-title">...</h3>

Innerhalb des Tags findest du folgenden Inhalt, also einen Link (<a href=““>) und eine Textauszeichnung (<span>):

<a href="https://www.machs-smart.de/listen-mit-blockly-nach-allen-werten-sortieren/">
     <span>Listen mit Blockly nach allen Werten sortieren</span>
</a>

Regex erstellen

Um nun den Inhalt zwischen dem „<h3>“-HTML-Tag auszulesen, eignet sich folgender Code:

(?<=HTML-TAG)[\s\S]*?(?=<\/)

Zusammengesetzt schaut der Regex-Code also wie folgt aus:

(?<=<h3 class="preview-title">)[\s\S]*?(?=<\/)

Mit diesem sucht der „Parser“ nach dem oben angegebenen HTML-Tag und extrahiert alles, was nach diesem Tag kommt, bis ein schließendes HTML-Tag („<\/“) folgt. Jeder „/“ muss durch einen „\“ escaped werden.

Regex testen

Wechsle auf die Website „regularexpressions101„, um deinen Regex-Code zu testen. Füge im Feld „Regular Expression“ den zusammengesetzten Regex-Code ein. Im Feld „Test String“ kopierst du demn kompletten Quelltext der machs-smart.de-Startseite (<STRG>+<U>):

Mit dem "Parser"-Adapter und ein paar Zeilen Regex-Code kannst du ganz einfach Daten aus anderen Websiten extrahieren. Der "Parser" öffnet eine Website, liest deren Quellext und durchsucht diesen nach deinem definierten Regex-Ausdruck.

Am rechten Rand erkennst du, dass die Regex-Suche bereits mehrere Bereiche gefunden hat. Klar, denn auf der machs-smart.de-Startseite gibt es ja mehrere Einträge, die zu deinem Suchmuster passen. Das spielt gleich beim Einrichten des „Parser“-Adapters eine Rolle.

„Parser“-Adapter einrichten

Im ioBroker öffnest du die Adapterkonfiguration des „Parsers“ und fügst eine neue Regel hinzu.

  • Den Namen kannst du frei definieren.
  • In das Feld „URL oder Dateiname“ kopierst du den Link der Zielseite, also „https://www.machs-smart.de/“.
  • Unter „RegEx“ fügst du den zusammengesetzten Regex-Code ein.
  • Als „Num“ wählst du „0“, denn du möchtest den 1. Treffer (in der Programmiersprache gezählt ab „0“).
  • Für den „Typ“ stellst du „string“ ein.
Mit dem "Parser"-Adapter und ein paar Zeilen Regex-Code kannst du ganz einfach Daten aus anderen Websiten extrahieren. Der "Parser" öffnet eine Website, liest deren Quellext und durchsucht diesen nach deinem definierten Regex-Ausdruck.

Nachdem du die Konfiguration gespeichert hast, erhältst du in den Objekten einen neuen Datenpunkt, der den Inhalt der Website enthält:

Mit dem "Parser"-Adapter und ein paar Zeilen Regex-Code kannst du ganz einfach Daten aus anderen Websiten extrahieren. Der "Parser" öffnet eine Website, liest deren Quellext und durchsucht diesen nach deinem definierten Regex-Ausdruck.

Diesen kannst du dann mit Blockly oder Javascript weiterverarbeiten.

War dieser Beitrag hilfreich?
Hat dir der Beitrag geholfen?
Die mit Sternchen (*) gekennzeichneten Links sind sogenannte Affiliate-Links. Wenn du auf so einen Affiliate-Link klickst und über diesen Link einkaufst, bekomme ich von dem betreffenden Online-Shop oder Anbieter eine Provision. Für dich verändert sich der Preis nicht.

4 Kommentare

Kommentieren

[…] CoronaZusärtzlich erhältst du Infos zur aktuellen Corona-Situation, wie eine tagesaktuelle Inzidenz deiner Stadt, die Neuinfektionen über Nacht und die Anzahl der Todesopfer. Die Daten werden via Parser von der Seite corona-in-zahlen.de abgerufen und verarbeitet. Wie du Daten von anderen Websites mit dem Parser abrufen kannst, erfährst du in diesem Artikel. […]

Hi, danke für den tollen Bericht.
Die Idee ist wirklich gut, wusste nicht das sowas überhaut geht.
Ich finde nur das it den Extressions schwierig.
Ich habe z.B. einen Code im Quelltext: „28 min\“
Also mit den Anführungszeichen.
Wie bekomme ich jetzt nur an den Wert der Minuten, bzw. möchte ich die 28 extrahiert haben.
Danke.

Hallo – danke für deine Infos … kann ich oft gut gebrauchen.
Wie funktioniert das mit dem Webseiten Inhalten, wenn man für die Seite einen Login braucht?

Schreibe einen Kommentar