HtmlAgilityPack para C# (.NET): guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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

Recommendations