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.