Arduino:
HTML parsen

Wie geht das:

Das Parsen von HTML auf Arduino verlangt in der Regel nach Bibliotheken mit geringem Speicherbedarf aufgrund der begrenzten Ressourcen des Geräts. Eine beliebte Wahl für Web-Scraping und -Parsing ist die Verwendung der ESP8266HTTPClient- und ESP8266WiFi-Bibliotheken für den ESP8266 oder deren ESP32-Pendants, aufgrund ihrer nativen Unterstützung für Wi-Fi-Fähigkeiten und HTTP-Protokolle. Hier ist ein einfaches Beispiel, um HTML zu holen und zu parsen, unter der Annahme, dass Sie mit einem ESP8266 oder ESP32 arbeiten:

Zuerst, die notwendigen Bibliotheken einbinden:

#include <ESP8266WiFi.h> // Für ESP8266
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
// Verwenden Sie die entsprechenden ESP32-Bibliotheken, falls Sie ein ESP32 verwenden

const char* ssid = "IhrSSID";
const char* password = "IhrPASSWORT";

Verbinden Sie sich mit Ihrem Wi-Fi-Netzwerk:

void setup() {
    Serial.begin(115200);
    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.println("Verbinden...");
    }
}

Machen Sie eine HTTP-Anfrage und parsen Sie ein einfaches Stück HTML:

void loop() {
    if (WiFi.status() == WL_CONNECTED) { //Überprüfen des WiFi-Verbindungsstatus
        HTTPClient http;  //Deklarieren eines Objektes der Klasse HTTPClient

        http.begin("http://example.com");  //Angeben des Anfrageziels
        int httpCode = http.GET();  //Senden der Anfrage

        if (httpCode > 0) { //Überprüfung des Rückkehr-Codes
            String payload = http.getString();   //Die Antwort der Anfrage erhalten
            Serial.println(payload);             //Die Antwort ausgeben

            // Einen spezifischen Teil parsen, z.B. Extrahieren des Titels aus der Nutzlast
            int titleStart = payload.indexOf("<title>") + 7; // +7, um den "<title>"-Tag zu überspringen
            int titleEnd = payload.indexOf("</title>", titleStart);
            String pageTitle = payload.substring(titleStart, titleEnd);

            Serial.print("Seitentitel: ");
            Serial.println(pageTitle);
        }

        http.end();   //Verbindung schließen
    }

    delay(10000); //Alle 10 Sekunden eine Anfrage stellen
}

Beispielausgabe (unter der Annahme, dass http://example.com eine einfache HTML-Struktur hat):

Verbinden...
...
Seitentitel: Beispiel-Domain

Dieses Beispiel demonstriert das Abrufen einer HTML-Seite und das Extrahieren des Inhalts des <title>-Tags. Für komplexeres HTML-Parsing sollten reguläre Ausdrücke (mit Vorsicht aufgrund von Speicherbeschränkungen) oder String-Manipulationsfunktionen in Betracht gezogen werden, um durch die HTML-Struktur zu navigieren. Fortgeschrittenes Parsing könnte anspruchsvollere Ansätze erfordern, einschließlich benutzerdefinierter Parsing-Algorithmen, die auf die spezifische Struktur des zu bearbeitenden HTMLs zugeschnitten sind, da die Standard-Arduino-Umgebung keine integrierte HTML-Parsing-Bibliothek enthält.