Aplicação

I. Preparação do ambiente

1. Formas de referenciar

Existem duas abordagens mais comuns:

  1. Método antigo: importar manualmente o arquivo HtmlAgilityPack.dll
  2. Método recomendado: instalar via pacote NuGet
Install-Package HtmlAgilityPack
2. Classes centrais mais utilizadas
Nome da classeFinalidade
HtmlDocumentContainer do documento HTML, responsável por carregar o código‑fonte HTML
HtmlWebClasse de requisição de rede, busca o HTML da página diretamente por URL
HtmlNodeNó DOM HTML individual (tags como div/a/p entre outras)
HtmlNodeCollectionColeção de HtmlNode, armazena múltiplos resultados de consulta

II. Duas maneiras de carregar HTML

Ambos os métodos retornam um objeto HtmlDocument

1: Carregar arquivo local / string HTML
  1. Carregar arquivo HTML local
using HtmlAgilityPack;
using System.Text;

HtmlDocument document = new HtmlDocument();
// Carrega arquivo local informando a codificação
document.Load("news.htm", Encoding.UTF8);Code language: JavaScript (javascript)
  1. Carregar string de texto HTML
string htmlStr = "<html>...</html>";
document.LoadHtml(htmlStr);Code language: HTML, XML (xml)
2: Carregar página da web online
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://example.com");Code language: JavaScript (javascript)

III. Consulta de nós

// 1. Instanciar objeto de documento
HtmlDocument document = new HtmlDocument();
// 2. Ler arquivo html local
document.Load("news.htm", Encoding.UTF8);
// 3. Obter nó raiz do documento
HtmlNode rootNode = document.DocumentNode;
// 4. Consultar vários nós com XPath, retorna coleção de nós
HtmlNodeCollection newsList = rootNode.SelectNodes(
    @"//html/body/div[@class='content']/div/div[@class='left']/div[1]/div[@class='blk12']/div[@class='blk122']/a"
);Code language: JavaScript (javascript)

Explicação dos métodos principais

  • SelectSingleNode("XPath"):retorna o primeiro nó que atende ao critério, retorno do tipo HtmlNode
  • SelectNodes("XPath"):retorna todos os nós correspondentes, retorno do tipo HtmlNodeCollection
  • Os materiais de aula usam caminhos absolutos completos. Em projetos reais é recomendado usar a busca relativa global para simplificar o XPath e evitar falhas quando a página sofrer alterações:
//div[@class='blk122']/aCode language: JSON / JSON with Comments (json)

IV. Exemplo: percorrer e extrair conteúdos

if(newsList != null)
{
    foreach(HtmlNode aNode in newsList)
    {
        string title = aNode.InnerText;          // Pegar texto dentro da tag
        string link  = aNode.GetAttributeValue("href",""); // Ler atributo href
    }
}Code language: PHP (php)

V. Referência rápida de propriedades importantes

  • .InnerText:texto puro dentro da tag
  • .InnerHtml:código HTML interno incluindo tags filhas
  • .OuterHtml:a própria tag somada a todo o HTML interno
  • GetAttributeValue("NomeDoAtributo","ValorPadrão"):leitura segura dos atributos da tag

Aplicação

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *