C#:
การวิเคราะห์ HTML
วิธีการ:
แม้ว่า .NET จะมีการสนับสนุนพื้นฐานสำหรับการทำงานกับ HTML เช่น HttpClient
สำหรับการดึงหน้าเว็บ แต่ก็ขาดตัวแยกวิเคราะห์ HTML ที่ครอบคลุมและฝังอยู่ภายในตัวเอง ดังนั้น นักพัฒนา C# ส่วนใหญ่จึงหันไปใช้ไลบรารีภายนอกยอดนิยมเช่น HtmlAgilityPack หรือ AngleSharp สำหรับความสามารถในการแยกวิเคราะห์ HTML ที่แข็งแกร่ง ไลบรารีทั้งสองอนุญาตให้แบ่งคำถาม การจัดการ และการเดินทางไปยัง DOM ของ HTML ได้อย่างง่ายดาย
การใช้ HtmlAgilityPack
ติดตั้ง HtmlAgilityPack: ก่อนอื่น ให้เพิ่มแพคเกจ HtmlAgilityPack ลงในโปรเจ็กต์ของคุณผ่าน NuGet
Install-Package HtmlAgilityPack
ตัวอย่างโค้ด: แยกวิเคราะห์สตริง 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
ติดตั้ง AngleSharp: เพิ่มไลบรารี AngleSharp ลงในโปรเจ็กต์ของคุณผ่าน NuGet
Install-Package AngleSharp
ตัวอย่างโค้ด: โหลดเอกสาร 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