C#:
Analisi del HTML

Come fare:

Sebbene .NET fornisca un supporto di base per lavorare con l’HTML, come l’HttpClient per il recupero di pagine web, manca di un parser HTML integrato e completo. Pertanto, la maggior parte dei sviluppatori C# si rivolge a librerie di terze parti popolari come HtmlAgilityPack o AngleSharp per funzionalità di parsing HTML robuste. Entrambe le librerie permettono una facile interrogazione, manipolazione e traversata del DOM HTML.

Utilizzando HtmlAgilityPack

  1. Installa HtmlAgilityPack: Prima, aggiungi il pacchetto HtmlAgilityPack al tuo progetto tramite NuGet.

    Install-Package HtmlAgilityPack
  2. Esempio di Codice: Analizza una stringa HTML ed estrai i titoli di tutti gli elementi <h1>.

    using HtmlAgilityPack;
    using System;
    using System.Linq;
    
    class Program
    {
        static void Main(string[] args)
        {
            var html = @"<html>
                          <body>
                              <h1>Titolo 1</h1>
                              <h1>Titolo 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);
            }
        }
    }

    Output dell’Esempio:

    Titolo 1
    Titolo 2

Utilizzando AngleSharp

  1. Installa AngleSharp: Aggiungi la libreria AngleSharp al tuo progetto tramite NuGet.

    Install-Package AngleSharp
  2. Esempio di Codice: Carica un documento HTML e interroga gli elementi div con una classe specifica.

    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'>Elemento 1</div><div class='item'>Elemento 2</div>"));
    
            var items = document.QuerySelectorAll(".item").Select(element => element.TextContent);
            foreach (var item in items)
            {
                Console.WriteLine(item);
            }
        }
    }

    Output dell’Esempio:

    Elemento 1
    Elemento 2

Sia HTMLAgilityPack che AngleSharp sono strumenti potenti per l’analisi dell’HTML, ma la tua scelta tra loro potrebbe dipendere da requisiti specifici del progetto, considerazioni sulle prestazioni o preferenze personali nella progettazione dell’API.