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
También en la biblioteca
Dokka para Kotlin: guía completa con ejemplos prácticos
Generación de Swagger/OpenAPI para Node.js (JavaScript): herramientas y ejemplos
Caché en Swift (iOS/macOS): Redis, NSCache y otras soluciones
Monitoreo de aplicaciones Java: biblioteca Micrometer e integración con Prometheus
Cliente HTTP para Swift (iOS/macOS): mejores bibliotecas 2024