C#:
HTML Parsen

Hoe:

Laten we een populaire .NET-bibliotheek voor HTML-parsing gebruiken: HtmlAgilityPack.

Eerst, installeer het via NuGet:

Install-Package HtmlAgilityPack

Vervolgens, laad een HTML-document en pak wat knooppunten:

using System;
using HtmlAgilityPack;

class Program
{
    static void Main()
    {
        var web = new HtmlWeb();
        var doc = web.Load("http://example.com");

        foreach (var node in doc.DocumentNode.SelectNodes("//a[@href]"))
        {
            Console.WriteLine($"Tekst: {node.InnerText}, Link: {node.Attributes["href"].Value}");
        }
    }
}

Het bovenstaande fragment haalt alle anker tags op met een href attribuut en print hun tekst en link.

Een voorbeelduitvoer kan er als volgt uitzien:

Tekst: Home, Link: http://example.com/home
Tekst: Over, Link: http://example.com/about
...

Diepgaand

HtmlAgilityPack (HAP) is sinds de vroege jaren 2000 toonaangevend voor parsing. Het is geliefd vanwege zijn flexibiliteit en gebruiksgemak, en het lijkt sterk op de DOM in browsers.

Alternatieven? Zeker. AngleSharp is een nieuwere bibliotheek, met ondersteuning voor asynchroon en volgt de huidige webstandaarden nauwer. Voor eenvoudige taken zou je zelfs Regex kunnen gebruiken, maar wees gewaarschuwd - HTML is niet gemaakt om regex-vriendelijk te zijn. Het is op zijn best een hacky oplossing.

Wat betreft de implementatie, HAP parseert de gegeven HTML naar een DOM-achtige structuur, waardoor je knooppunten kunt opvragen en manipuleren met XPath of LINQ. Het is robuust genoeg om ongelijkmatige HTML aan te kunnen, wat het een voordeel geeft bij het scrapen van echte, vaak imperfecte webpagina’s.

Zie Ook