Obter conteúdo do documento

Obter o objeto de documento

1. Criar o objeto de documento

HtmlDocument document = new HtmlDocument();Code language: JavaScript (javascript)

2. Duas formas de carregamento

1)Carregar string HTML

document.LoadHtml(htmlString);Code language: JavaScript (javascript)

2)Carregar arquivo HTML local (especifique a codificação para evitar caracteres ilegíveis)

document.Load(@"c:/news.html", Encoding.UTF8);Code language: JavaScript (javascript)

Para caminhos no Windows, recomenda‑se usar o caractere @ para desativar o escape. O trecho c://news.html no material é apenas um exemplo de sintaxe.

3. Obter nó raiz

HtmlNode rootNode = document.DocumentNode;Code language: JavaScript (javascript)

Todas as consultas XPath são executadas com base em rootNode.

Operações com nós

1. Criar novo nó a partir do HTML de um nó

HtmlNode newNode = HtmlNode.CreateNode(newsNode.OuterHtml);
  • OuterHtml: Inclui sua própria tag mais todo o conteúdo HTML interno
  • Usado com frequência para copiar nós ou analisar fragmentos HTML separadamente

2. Consultar nós

  • SelectSingleNode("XPath"): Retorna o primeiro nó correspondente, tipo de retorno HtmlNode
HtmlNode childNode = itemNode.SelectSingleNode("//div[1]");Code language: JavaScript (javascript)
  • SelectNodes("XPath"): Retorna todos os nós correspondentes, tipo de retorno HtmlNodeCollection

3. Ler texto e atributos

  1. Extrair texto puro de dentro do nó
string text = itemNode.InnerText;
  1. Ler atributo da tag (forma básica de escrita)
string href = itemNode.Attributes["href"].Value;Code language: JavaScript (javascript)

Risco: Quando a tag não possui o atributo href, acessar diretamente Attributes["href"] retorna null e causa falha no código.

Forma segura recomendada:

string href = itemNode.GetAttributeValue("href", "");Code language: JavaScript (javascript)

4. Código completo: iterar lista de notícias

foreach (HtmlNode item in newsList)
{
    string title = item.InnerText;
    string href = item.Attributes["href"].Value;
}Code language: PHP (php)

Observações complementares

  1. Tratamento de valores nulos
    SelectNodes() retorna null se não encontrar nós compatíveis. É obrigatório fazer validação antes da execução do foreach:
if(newsList != null)
{
    foreach(var item in newsList){ ... }
}Code language: PHP (php)
  1. Diferença entre InnerText / InnerHtml / OuterHtml
  • InnerText: Extrai apenas texto, remove todas as tags
  • InnerHtml: Conteúdo HTML interno do nó, sem a própria tag
  • OuterHtml: A própria tag mais todo o HTML interno
  1. Dica rápida sobre XPath
    //div faz busca global por todos os elementos div; sem o // só corresponde aos nós filhos diretos.

Exemplo funcional completo

using HtmlAgilityPack;
using System.Text;

//1.Inicializar documento
HtmlDocument document = new HtmlDocument();
document.Load("news.htm", Encoding.UTF8);
HtmlNode rootNode = document.DocumentNode;

//2.Consultar links de notícias em lote
HtmlNodeCollection newsList = rootNode.SelectNodes(@"//div[@class='blk122']/a");

if(newsList != null)
{
    foreach (HtmlNode item in newsList)
    {
        string title = item.InnerText.Trim();
        string link = item.GetAttributeValue("href", "");
        Console.WriteLine($"Título: {title} Link: {link}");
    }
}Code language: JavaScript (javascript)

Obter conteúdo do documento

Previous:

Deixe um comentário

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