HtmlAgilityPack para C# (.NET): guia completo com exemplos
1. O que é e para que serve
HtmlAgilityPack é uma biblioteca poderosa para parsing de documentos HTML no ecossistema .NET (C#, VB.NET, F#). Ela oferece aos desenvolvedores uma API prática para navegação, busca, extração e modificação de código HTML. Diferente dos parsers XML padrão, o HtmlAgilityPack foi projetado especificamente para lidar com HTML "sujo", comum na web real: tags não fechadas, atributos incorretos, erros aninhados, etc. A biblioteca corrige automaticamente esses defeitos, criando uma árvore DOM correta.
Para que serve? Os principais casos de uso incluem: web scraping (extração de dados de sites), automação de testes de interfaces web, migração de conteúdo entre CMS, análise de relatórios HTML, limpeza e normalização de código HTML, além da criação de geradores HTML personalizados. Graças ao suporte a XPath e seletores CSS (via extensão), a biblioteca permite selecionar elementos de forma flexível e precisa.
O HtmlAgilityPack é ativamente mantido pela comunidade, possui código aberto e é compatível com .NET Framework 4.5+, .NET Core 2.0+, .NET 5/6/7/8, além de Xamarin e Unity. Isso o torna uma ferramenta versátil para qualquer desenvolvedor .NET que trabalhe com HTML.
2. Instalação
A instalação da biblioteca é feita através do NuGet Package Manager. Execute um dos seguintes comandos no console do gerenciador de pacotes (Package Manager Console) ou no terminal do .NET CLI:
// Via .NET CLI
dotnet add package HtmlAgilityPack
// Via Package Manager Console
Install-Package HtmlAgilityPack
// Ou pela interface NuGet UI: procure por "HtmlAgilityPack" e instale a versão estável mais recente
Após a instalação, adicione a diretiva using no início do arquivo:
using HtmlAgilityPack;
3. Início rápido — exemplo mínimo funcional
Vamos ver um exemplo simples: carregar uma string HTML, encontrar todos os links e exibir o texto e a URL de cada um.
using System;
using HtmlAgilityPack;
class Program
{
static void Main()
{
// 1. Criar um documento HTML
var htmlDoc = new HtmlDocument();
// 2. Carregar o HTML (na prática, pode ser de um arquivo ou da web)
string html = @"
";
htmlDoc.LoadHtml(html);
// 3. Selecionar todas as tags <a> usando XPath
var links = htmlDoc.DocumentNode.SelectNodes("//a");
// 4. Percorrer cada link e exibir o texto e o 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 da execução:
Texto: Example, URL: https://example.com
Texto: PythonLib, URL: https://pythonlib.ru
4. Principais classes e métodos
Abaixo estão as classes e métodos essenciais do HtmlAgilityPack, com descrição detalhada e exemplos.
4.1. HtmlDocument — classe principal para manipulação do documento
Assinatura: public class HtmlDocument
Descrição: Representa um documento HTML completo. Permite carregar HTML a partir de uma string, arquivo ou stream, além de realizar buscas e m
Também na biblioteca
Registro em Kotlin: visão geral das melhores bibliotecas e soluções
Filas de tarefas para PHP: RabbitMQ, Beanstalkd e Gearman
Trabalhando com ZIP/arquivos em Swift (iOS/macOS): guia completo