Arduino:
Разбор HTML

Как это сделать:

Arduino изначально не предназначен для работы в сети, но с помощью внешних модулей (например, ESP8266), вы можете подключаться и получать веб-контент. Здесь мы будем извлекать HTML и искать определенный тег:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>

const char* ssid = "вашSSID";
const char* password = "вашПАРОЛЬ";

const char* host = "example.com";

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

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  WiFiClient client;
  
  if (!client.connect(host, 80)) {
    Serial.println("Не удалось подключиться");
    return;
  }
  
  client.println("GET / HTTP/1.1");
  client.print("Host: ");
  client.println(host);
  client.println("Connection: close");
  client.println();

  while (client.connected() || client.available()) {
    if (client.available()) {
      String line = client.readStringUntil('\n');
      if (line.indexOf("<title>") >= 0) {
        int startIndex = line.indexOf("<title>") + 7;
        int endIndex = line.indexOf("</title>");
        String pageTitle = line.substring(startIndex, endIndex);
        Serial.println(pageTitle);
      }
    }
  }
}

void loop() {
  // Мы запускаем настройку один раз и получаем искомую информацию. Нет необходимости в цикле.
}

Пример выходных данных:

Пример домена

Глубокое погружение:

Исторически микроконтроллеры, вроде Arduino, не были предназначены для сложных задач, таких как парсинг HTML. Но всё изменилось с появлением модулей, способных работать в сети, и библиотек, обогащающих их возможности.

Ключ к парсингу HTML - манипуляции со строками. Вы ищете шаблоны. Но помните, HTML может быть беспорядочным. Это не так, как JSON с его надёжной структурой. Данный подход подходит для простых задач, но может не сработать, если HTML внезапно изменится.

Альтернативы? Конечно. Если вы серьезно настроены на парсинг, рассмотрите использование более мощного микроконтроллера, совместимого с Arduino, или такого, который может запускать Linux, что открывает доступ к таким инструментам, как Python с библиотеками, предназначенными для веб-скрейпинга.

Простота Arduino - это и плюс, и минус здесь. Вы можете реализовать базовый парсинг без особых сложностей, но если вам нужно обработать сложный HTML или огромные объемы данных, вы выросли из своего Uno.

Смотрите также: