วิธีดึงข้อมูลตารางจาก HTML

Table HTML ถูกนำมาใช้กันอย่างแพร่หลายบนเว็บเพื่อแสดงข้อมูล การดึงข้อมูลจากตาราง HTML เป็นเรื่องปกติในการขูดเว็บ การวิเคราะห์ข้อมูล และระบบอัตโนมัติ เมื่อสร้างพาร์เซอร์ มักจะจำเป็นต้องแยกข้อมูลจากตาราง HTML และแปลงเป็นรูปแบบที่มีโครงสร้าง เช่น JSON, CSV หรือ Excel เรามาสำรวจวิธีการดึงข้อมูลตารางจาก HTML กันดีกว่า

ขั้นแรก ตรวจสอบให้แน่ใจว่าคุณได้ Aspose.HTML สำหรับ .NET ติดตั้ง ในโปรเจ็กต์ของคุณ กระบวนการติดตั้งไลบรารีนี้ค่อนข้างง่าย เปิดตัวจัดการแพ็คเกจ NuGet ค้นหา Aspose.HTML และติดตั้ง คุณยังอาจใช้คำสั่งต่อไปนี้จาก Package Manager Console:


ติดตั้ง Aspose.HTML สำหรับ .NET

Install-Package Aspose.HTML



แยกข้อมูลตารางจาก HTML โดยใช้ C#

Aspose.HTML สำหรับ .NET เป็นไลบรารีที่มีประสิทธิภาพซึ่งมีชุดเครื่องมือที่มีประสิทธิภาพสำหรับการแยกวิเคราะห์และรวบรวมข้อมูลจากเอกสาร HTML ตัวอย่างต่อไปนี้แสดงวิธีค้นหาองค์ประกอบ <table> ทั้งหมดในเอกสาร HTML แยกข้อมูลตาราง และส่งออกข้อมูลในรูปแบบ JSON สมมติว่าตารางใน HTML ประกอบด้วยรายการการทดสอบ โดยแต่ละการทดสอบจะมี ID ชื่อ ความคิดเห็น และไฮเปอร์ลิงก์ไปยังเนื้อหาของการทดสอบ นี่คือข้อมูลที่เราต้องการแยกออกจากตารางในตัวอย่างต่อไปนี้:


รหัส C# เพื่อดึงข้อมูลจากตาราง HTML

using Aspose.Html;
using System.IO;
using System.Linq;
using System.Text.Json;
using System.Collections.Generic;
...

    // Open the document from which you want to extract table data
    using var document = new HTMLDocument(Path.Combine(DataDir, "chapter-9.htm"));
    {
        // Check if there are any table elements in the document
        var tables = document.GetElementsByTagName("table");

        if (tables.Any())
        {
            var result = new List<Dictionary<string, string>>();
            //var i = 0;
            foreach (var table in tables)
            {
                // extract data from html table
                var tbodies = table.GetElementsByTagName("tbody");

                foreach (var tbody in tbodies)
                {
                    if (tbody.Children.Length > 1)
                    {
                        foreach (var row in tbody.Children)
                        {
                            if (row.HasAttribute("id"))
                            {
                                //test row
                                var data = new Dictionary<string, string>();

                                data["Id"] = row.GetAttribute("id");
                                if (row.Children.Length > 0)
                                {
                                    var td = row.Children[0];
                                    if (td.Children.Length > 0)
                                    {
                                        var element = td.Children[0].TagName == "STRONG"
                                            ? td.Children[0].Children[0]
                                            : td.Children[0];
                                        var href = ((HTMLAnchorElement)element).Href;
                                        data["Href"] = href;
                                        data["TestName"] = Path.GetFileNameWithoutExtension(href);
                                    }
                                }

                                data["TestComment"] = string.Join(" ",
                                    row.Children[3].TextContent
                                        .Split(new char[0], StringSplitOptions.RemoveEmptyEntries).ToList()
                                        .Select(x => x.Trim()));
                                result.Add(data);
                            }
                        }
                        var json = JsonSerializer.Serialize(result);
                        Console.WriteLine(json);
                    }
                }
            }
        }
        else
        {
            // Handle the case where no tables are found
            Console.WriteLine("No tables found in the document.");
        }
    }



ขั้นตอนในการดึงข้อมูลตารางจาก HTML

ด้วยการทำตามขั้นตอนเหล่านี้ คุณสามารถดึงข้อมูลตารางจาก HTML เช่น ไฮเปอร์ลิงก์และเนื้อหาข้อความ เพื่อวัตถุประสงค์ต่างๆ รวมถึงการวิเคราะห์ข้อมูลหรือการรายงาน

  1. ใช้ตัวสร้าง HTMLDocument() เพื่อเริ่มต้นเอกสาร HTML ส่งผ่านเส้นทางของไฟล์ HTML ต้นฉบับเป็นพารามิเตอร์ไปยังตัวสร้าง
  2. ใช้เมธอด GetElementsByTagName("table") เพื่อรวบรวมองค์ประกอบ <table> ทั้งหมด วิธีการส่งคืนรายการองค์ประกอบ <table> ของเอกสาร HTML เก็บคอลเลกชันขององค์ประกอบตารางไว้ในตัวแปร tables
  3. ใช้เมธอด LINQ Any() เพื่อตรวจสอบว่ามีองค์ประกอบ <table> ใด ๆ ในเอกสาร HTML หรือไม่ เพื่อให้แน่ใจว่ามีตารางสำหรับดึงข้อมูลออกมา
  4. วนซ้ำแต่ละตารางที่พบในเอกสารโดยใช้ลูป foreach:
    • ใช้เมธอด GetElementsByTagName("tbody") เพื่อดึงองค์ประกอบ <tbody> ทั้งหมด (เนื้อหาของตาราง)
    • ภายในลูป ให้วนซ้ำแต่ละองค์ประกอบ <tbody> เพื่อเข้าถึงแถวของข้อมูลที่ได้รับโดยใช้ลูป foreach อื่น
    • แยกข้อมูลที่เกี่ยวข้องจากแต่ละแถวตามเงื่อนไขหรือคุณลักษณะเฉพาะ
    • หลังจากแยกข้อมูลจากแถวทั้งหมดแล้ว ให้ใช้เมธอด JsonSerializer.Serialize() เพื่อทำให้รายการพจนานุกรมที่มีข้อมูลที่แยกออกมาเป็นอนุกรมเป็นรูปแบบ JSON
  5. ใช้เมธอด Console.WriteLine() เพื่อส่งออก JSON แบบอนุกรมสำหรับแสดงในคอนโซล
  6. หากเอกสารไม่มีตาราง ให้พิมพ์ข้อความไปยังคอนโซลเพื่อระบุว่าไม่พบตาราง

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Aspose.HTML API โปรดไปที่คำแนะนำ เอกสารประกอบ ของเรา Aspose.HTML สำหรับ .NET เป็นไลบรารีการแยกวิเคราะห์ HTML ขั้นสูงที่ช่วยให้คุณสามารถสร้าง แก้ไข และแปลงไฟล์ HTML, XHTML, MD, EPUB และ MHTML ส่วนเอกสารประกอบ Data Extraction อธิบายวิธีการตรวจสอบ รวบรวม และแยกข้อมูลจากหน้าเว็บโดยอัตโนมัติโดยใช้ Aspose.HTML สำหรับ .NET ในบทความในส่วนนี้ คุณจะได้เรียนรู้วิธีไปยังส่วนต่างๆ ของเอกสาร HTML และดำเนินการตรวจสอบองค์ประกอบโดยละเอียด บันทึกเว็บไซต์หรือไฟล์จาก URL แยกรูปภาพประเภทต่างๆ จากเว็บไซต์ และอื่นๆ



เครื่องมือสร้างตาราง HTML – แอปออนไลน์

Aspose.HTML เสนอ เครื่องมือสร้างตาราง HTML เป็นแอปพลิเคชันออนไลน์สำหรับการสร้างตารางที่มีตัวเลือกที่ปรับแต่งได้ ใช้งานได้ฟรีและชัดเจน เพียงกรอกตัวเลือกที่จำเป็นทั้งหมดแล้วรับผลลัพธ์! ตัวสร้างตาราง HTML จะสร้างโค้ดตาราง HTML โดยอัตโนมัติ เครื่องมือนี้ได้รับการออกแบบมาเพื่อให้คุณได้รับตาราง HTML ที่จำเป็นและนำไปออนไลน์ได้โดยเร็วที่สุด

คุณสมบัติไลบรารี C# อื่น ๆ ที่รองรับ

ใช้ไลบรารี Aspose.HTML สำหรับ .NET เพื่อแยกวิเคราะห์และจัดการเอกสารที่ใช้ HTML ชัดเจน ปลอดภัย และเรียบง่าย!