HtmlAgilityPack para C# (.NET): guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

HtmlAgilityPack para C# (.NET): guía completa con ejemplos

1. ¿Qué es y para qué sirve?

HtmlAgilityPack es una potente biblioteca para analizar (parsear) documentos HTML en el ecosistema .NET (C#, VB.NET, F#). Proporciona a los desarrolladores una API cómoda para navegar, buscar, extraer y modificar código HTML. A diferencia de los analizadores XML estándar, HtmlAgilityPack está diseñada específicamente para trabajar con HTML "sucio", que es común en la web real: etiquetas sin cerrar, atributos incorrectos, errores anidados, etc. La biblioteca corrige automáticamente estos defectos, creando un árbol DOM correcto.

¿Para qué sirve? Los casos de uso principales incluyen: web scraping (extraer datos de sitios web), automatización de pruebas de interfaces web, migración de contenido entre CMS, análisis de informes HTML, limpieza y normalización de código HTML, así como la creación de generadores HTML personalizados. Gracias al soporte de XPath y selectores CSS (a través de una extensión), la biblioteca permite seleccionar elementos de forma flexible y precisa.

HtmlAgilityPack cuenta con el apoyo activo de la comunidad, tiene código abierto y es compatible con .NET Framework 4.5+, .NET Core 2.0+, .NET 5/6/7/8, así como con Xamarin y Unity. Esto la convierte en una herramienta universal para cualquier desarrollador .NET que trabaje con HTML.

2. Instalación

La instalación de la biblioteca se realiza a través del Administrador de paquetes NuGet. Ejecuta uno de los siguientes comandos en la consola del administrador de paquetes (Package Manager Console) o en la terminal de .NET CLI:

// A través de .NET CLI
dotnet add package HtmlAgilityPack

// A través de Package Manager Console
Install-Package HtmlAgilityPack

// O a través de la interfaz de NuGet: busca "HtmlAgilityPack" e instala la última versión estable

Después de la instalación, añade la directiva using al inicio del archivo:

using HtmlAgilityPack;

3. Inicio rápido: ejemplo mínimo funcional

Veamos un ejemplo sencillo: cargaremos una cadena HTML, buscaremos todos los enlaces y mostraremos su texto y URL.

using System;
using HtmlAgilityPack;

class Program
{
    static void Main()
    {
        // 1. Creamos un documento HTML
        var htmlDoc = new HtmlDocument();
        
        // 2. Cargamos el HTML (en la práctica podría ser desde un archivo o la web)
        string html = @"
        
            
                
            








        ";
        htmlDoc.LoadHtml(html);
        
        // 3. Seleccionamos todas las etiquetas <a> con XPath
        var links = htmlDoc.DocumentNode.SelectNodes("//a");
        
        // 4. Recorremos cada una y mostramos el texto y el href
        if (links != null)
        {
            foreach (var link in links)
            {
                string text = link.InnerText.Trim();
                string href = link.GetAttributeValue("href", "");
                Console.WriteLine($"Texto: {text}, URL: {href}");
            }
        }
    }
}

Resultado de la ejecución:

Texto: Example, URL: https://example.com
Texto: PythonLib, URL: https://pythonlib.ru

4. Clases y métodos principales

A continuación se presentan las clases y métodos clave de HtmlAgilityPack con descripciones detalladas y ejemplos.

4.1. HtmlDocument: la clase principal para trabajar con documentos

Firma: public class HtmlDocument

Descripción: Representa un documento HTML completo. Permite cargar HTML desde una cadena, archivo o flujo, así como realizar búsquedas y m

Recommendations