Arduino:
Analysering av HTML

Hvordan:

Parsing av HTML på Arduino krever vanligvis biblioteker med minimalt fotavtrykk på grunn av begrensede enhetsressurser. Et populært valg for webskraping og parsing er å bruke ESP8266HTTPClient- og ESP8266WiFi-bibliotekene for ESP8266, eller tilsvarende biblioteker for ESP32, gitt deres innebygde støtte for Wi-Fi-egenskaper og HTTP-protokoller. Her er et grunnleggende eksempel for å hente og parse HTML, under forutsetning av at du arbeider med en ESP8266 eller ESP32:

Først, inkluder de nødvendige bibliotekene:

#include <ESP8266WiFi.h> // For ESP8266
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
// Bruk tilsvarende ESP32-biblioteker hvis du bruker en ESP32

const char* ssid = "yourSSID";
const char* password = "yourPASSWORD";

Koble til Wi-Fi-nettverket ditt:

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

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

Gjør en HTTP-forespørsel og parse et enkelt stykke HTML:

void loop() {
    if (WiFi.status() == WL_CONNECTED) { //Sjekk WiFi-tilkoblingsstatus
        HTTPClient http;  //Deklarer et objekt av klassen HTTPClient

        http.begin("http://example.com");  //Spesifisere forespørselsdestinasjon
        int httpCode = http.GET();  //Send forespørselen

        if (httpCode > 0) { //Sjekk returkoden
            String payload = http.getString();   //Hent forespørselresponsens nyttelast
            Serial.println(payload);             //Skriv ut responsens nyttelast

            // Parse en bestemt del, f.eks. ekstrahere tittel fra nyttelast
            int titleStart = payload.indexOf("<title>") + 7; // +7 for å flytte forbi "<title>"-taggen
            int titleEnd = payload.indexOf("</title>", titleStart);
            String pageTitle = payload.substring(titleStart, titleEnd);

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

        http.end();   //Lukk tilkoblingen
    }

    delay(10000); //Gjør en forespørsel hvert 10. sekund
}

Eksempel på utdata (med utgangspunkt i at http://example.com har en enkel HTML-struktur):

Kobler til...
...
Sidetittel: Example Domain

Dette eksemplet demonstrerer hvordan man henter en HTML-side og ekstraherer innholdet i <title>-taggen. For mer kompleks HTML-parsing kan det vurderes å bruke regulære uttrykk (med forsiktighet på grunn av minnebegrensninger) eller strengmanipuleringsfunksjoner for å navigere gjennom HTML-strukturen. Avansert parsing kan kreve mer sofistikerte tilnærminger, inkludert egendefinerte parsingalgoritmer skreddersydd for den spesifikke strukturen av HTML du har med å gjøre, ettersom standard Arduino-miljøet ikke inkluderer et innebygget HTML-parsingbibliotek.