Librairie pour analyser le code HTML

L'analyse d'un document XML est supporté par les objets XMLDocument et XPathDocument dans le Framework .NET. Si vous avez déjà analisé un document HTML, vous avez sans doute remarqué quelques similutides avec un document XML. Par contre, il n'existe aucun objet pour permettre de parser du code HTML. Vous pouvez analysé du HTML à l'aide de manipulation de string et/ou des expressions régulières. Cependant, il est très difficile d'obtenir de bons résultats avec ces méthodes.

Heureusement, il existe une librairie .NET (HTML Agility Pack) pour faire des manipulations HTML. Cette librairie permet de parser du code HTML et le structuré de façon à obtenir des objets similaires au langage XML.

Voici quelques exemples de l'utilisation de cette librairie.

Obtenir tous les liens d'une page WEB

HtmlWeb hw = new HtmlWeb();
HtmlDocument hd = hw.Load("http://www.billypepin.com");
HtmlNodeCollection hnc = hd.DocumentNode.SelectNodes("//a[@href]");

foreach (HtmlNode hn in hnc)
    Response.Write(hn.Attributes["href"].Value + "
");

Extraire les valeurs des tableaux d'une page WEB

L'exemple ci-dessous démontre l'utilisation de Linq to Objects.

HtmlWeb hw = new HtmlWeb();
HtmlDocument hd = hw.Load("http://www.billypepin.com");

var query = from table in hd.DocumentNode.SelectNodes("//table").Cast()
            from row in table.SelectNodes("tr").Cast()
            from cell in row.SelectNodes("th|td").Cast()
            select new {Table = table.Id, Value = cell.InnerText};

foreach(var c in query)
    Response.Write(String.Format("{0}: {1}", c.Table, c.Value));

En résumé, cette librairie permet de simplifier l'analyse du code HTML. De plus, vous pouvez créer des routines pour : modifier ou corriger le rendu HTML, extraire les liens ou images et extraire du contenu d'une page web.

À propos

Je suis un développeur web. Je m'intéresse également à l'optimisation de site pour les moteurs de recherche (SEO). Sur ce site, vous trouverez des trucs, conseils, tutoriels pour vous aider à développer  des applications web à l'aide de : ASP.NET, ASP.NET MVC, jQuery, Javascript et plus. De plus, je vous tiendrai au courant des nouveautés sur le web.

Pages