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

วิธีการ:

แม้ว่า .NET จะมีการสนับสนุนพื้นฐานสำหรับการทำงานกับ HTML เช่น HttpClient สำหรับการดึงหน้าเว็บ แต่ก็ขาดตัวแยกวิเคราะห์ HTML ที่ครอบคลุมและฝังอยู่ภายในตัวเอง ดังนั้น นักพัฒนา C# ส่วนใหญ่จึงหันไปใช้ไลบรารีภายนอกยอดนิยมเช่น HtmlAgilityPack หรือ AngleSharp สำหรับความสามารถในการแยกวิเคราะห์ HTML ที่แข็งแกร่ง ไลบรารีทั้งสองอนุญาตให้แบ่งคำถาม การจัดการ และการเดินทางไปยัง DOM ของ HTML ได้อย่างง่ายดาย

การใช้ HtmlAgilityPack

  1. ติดตั้ง HtmlAgilityPack: ก่อนอื่น ให้เพิ่มแพคเกจ HtmlAgilityPack ลงในโปรเจ็กต์ของคุณผ่าน NuGet

    Install-Package HtmlAgilityPack
  2. ตัวอย่างโค้ด: แยกวิเคราะห์สตริง HTML และสกัดชื่อเรื่องของทุกองค์ประกอบ <h1>

    using HtmlAgilityPack;
    using System;
    using System.Linq;
    
    class Program
    {
        static void Main(string[] args)
        {
            var html = @"<html>
                          <body>
                              <h1>Title 1</h1>
                              <h1>Title 2</h1>
                          </body>
                         </html>";
            var htmlDoc = new HtmlDocument();
            htmlDoc.LoadHtml(html);
    
            var h1Tags = htmlDoc.DocumentNode.SelectNodes("//h1").Select(node => node.InnerText);
            foreach (var title in h1Tags)
            {
                Console.WriteLine(title);
            }
        }
    }

    ตัวอย่างผลลัพธ์:

    Title 1
    Title 2

การใช้ AngleSharp

  1. ติดตั้ง AngleSharp: เพิ่มไลบรารี AngleSharp ลงในโปรเจ็กต์ของคุณผ่าน NuGet

    Install-Package AngleSharp
  2. ตัวอย่างโค้ด: โหลดเอกสาร HTML และค้นหาองค์ประกอบ div ที่มีคลาสเฉพาะ

    using AngleSharp;
    using AngleSharp.Dom;
    using System;
    using System.Linq;
    using System.Threading.Tasks;
    
    class Program
    {
        static async Task Main(string[] args)
        {
            var context = BrowsingContext.New(Configuration.Default);
            var document = await context.OpenAsync(req => req.Content("<div class='item'>Item 1</div><div class='item'>Item 2</div>"));
    
            var items = document.QuerySelectorAll(".item").Select(element => element.TextContent);
            foreach (var item in items)
            {
                Console.WriteLine(item);
            }
        }
    }

    ตัวอย่างผลลัพธ์:

    Item 1
    Item 2

ทั้ง HTMLAgilityPack และ AngleSharp เป็นเครื่องมือที่มีประสิทธิภาพสำหรับการแยกวิเคราะห์ HTML แต่การเลือกใช้ระหว่างสองตัวนี้อาจขึ้นอยู่กับความต้องการเฉพาะของโปรเจ็กต์ พิจารณาเรื่องประสิทธิภาพ หรือความชอบส่วนบุคคลในการออกแบบ API