Arduino:
การวิเคราะห์ HTML

วิธีการ:

การแยกข้อมูล HTML บน Arduino โดยทั่วไปต้องการไลบรารีที่มีขนาดเล็กเนื่องจากทรัพยากรอุปกรณ์มีจำกัด ตัวเลือกยอดนิยมสำหรับการเว็บสคริปก้อปและการแยกข้อมูลคือการใช้ไลบรารี ESP8266HTTPClient และ ESP8266WiFi สำหรับ ESP8266 หรือตัวที่ใช้กับ ESP32 ที่เทียบเท่า เนื่องจากมีการสนับสนุนโดยตรงสำหรับความสามารถ Wi-Fi และโปรโตคอล HTTP นี่คือตัวอย่างพื้นฐานสำหรับการดึงและแยกข้อมูล HTML โดยสมมติว่าคุณกำลังทำงานกับ ESP8266 หรือ ESP32:

ก่อนอื่น ให้เพิ่มไลบรารีที่จำเป็น:

#include <ESP8266WiFi.h> // สำหรับ ESP8266
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
// ใช้ไลบรารีต่างๆ สำหรับ ESP32 ถ้าใช้ ESP32

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

เชื่อมต่อกับเครือข่าย Wi-Fi ของคุณ:

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

    while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.println("กำลังเชื่อมต่อ...");
    }
}

ทำการร้องขอ HTTP และแยกข้อมูล HTML ชิ้นง่าย:

void loop() {
    if (WiFi.status() == WL_CONNECTED) { //ตรวจสอบสถานะการเชื่อมต่อ WiFi
        HTTPClient http;  //ประกาศอ็อบเจคของคลาส HTTPClient

        http.begin("http://example.com");  //ระบุปลายทางของคำร้องขอ
        int httpCode = http.GET();  //ส่งคำร้องขอ

        if (httpCode > 0) { //ตรวจสอบรหัสที่คืนกลับ
            String payload = http.getString();   //รับ payload ของการตอบรับคำร้องขอ
            Serial.println(payload);             //พิมพ์ payload ของการตอบรับ

            // แยกส่วนเฉพาะ เช่น การคัดลอกหัวเรื่องจาก payload
            int titleStart = payload.indexOf("<title>") + 7; // +7 เพื่อข้ามแท็ก "<title>"
            int titleEnd = payload.indexOf("</title>", titleStart);
            String pageTitle = payload.substring(titleStart, titleEnd);

            Serial.print("หัวเรื่องของเพจ: ");
            Serial.println(pageTitle);
        }

        http.end();   //ปิดการเชื่อมต่อ
    }

    delay(10000); //ทำการร้องขอทุก 10 วินาที
}

ตัวอย่างผลลัพธ์ (โดยสมมติว่า http://example.com มีโครงสร้าง HTML ง่าย):

กำลังเชื่อมต่อ...
...
หัวเรื่องของเพจ: ตัวอย่างโดเมน

ตัวอย่างนี้แสดงการดึงหน้า HTML และการคัดลอกเนื้อหาที่อยู่ในแท็ก <title> สำหรับการแยกข้อมูล HTML ที่ซับซ้อนมากขึ้น พิจารณาใช้การแสดงออกปกติ (ด้วยความระมัดระวังเนื่องจากข้อจำกัดด้านหน่วยความจำ) หรือฟังก์ชันการจัดการสตริงเพื่อเลื่อนผ่านโครงสร้าง HTML การแยกข้อมูลที่ซับซ้อนอาจต้องการวิธีการที่ซับซ้อนยิ่งขึ้น รวมถึงอัลกอริธึมการแยกข้อมูลที่กำหนดเอง ตามโครงสร้าง HTML ที่คุณกำลังจัดการ ด้วยเหตุผลที่สภาพแวดล้อม Arduino มาตรฐานไม่รวมไลบรารีการแยกข้อมูล HTML ที่ใช้งานได้เลย