Análise de HTML em Go (Golang): bibliotecas e exemplos de código

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

Análise de HTML em Go (Golang): visão geral das ferramentas e exemplos



Go (Golang) é uma linguagem de programação compilada, estaticamente tipada do Google, ideal para criar parsers e web scrapers de alto desempenho. Graças ao suporte embutido para concorrência (goroutines) e à rica biblioteca padrão, Go permite processar documentos HTML de qualquer complexidade de forma eficiente. Neste artigo, veremos as principais bibliotecas para análise de HTML em Go, seus recursos e exemplos práticos de código.



Biblioteca padrão: net/html



O pacote golang.org/x/net/html é a base para trabalhar com HTML em Go. Ele fornece um tokenizador e um parser que constrói a árvore DOM do documento. Esta é uma ferramenta de baixo nível que oferece controle total sobre o processo de análise, mas requer mais código para tarefas comuns.



Exemplo de uso do net/html para extrair todos os links de um documento HTML:



package main

import ( "fmt" "golang.org/x/net/html" "strings")

func main() { htmlContent := `<html><body><a href="/page1">Link 1</a><a href="/page2">Link 2</a></body></html>` doc, _ := html.Parse(strings.NewReader(htmlContent)) var links []string var f func(*html.Node) f = func(n *html.Node) { if n.Type == html.ElementNode && n.Data == "a" { for _, attr := range n.Attr { if attr.Key == "href" { links = append(links, attr.Val) } } } for c := n.FirstChild; c != nil; c = c.NextSibling { f(c) } } f(doc) for _, link := range links { fmt.Println(link) }}


Este código percorre recursivamente a árvore DOM, encontra todas as tags <a> e extrai o valor do atributo href. O método é simples e confiável, mas para tarefas mais complexas (como busca por seletores CSS), é melhor usar bibliotecas especializadas.



Biblioteca goquery: jQuery para Go



github.com/PuerkitoBio/goquery é a biblioteca mais popular para análise de HTML em Go. Ela fornece uma API semelhante ao jQuery: seleção de elementos por seletores CSS, encadeamento de métodos, manipulação do DOM. Isso torna o código conciso e legível.



Instalação:

go get github.com/PuerkitoBio/goquery


Exemplo de análise de página com extração de títulos e links:



package main

import ( "fmt" "log" "net/http"

"github.com/PuerkitoBio/goquery")

func main() { // Carregar a página HTML res, err := http.Get("https://example.com") if err != nil { log.Fatal(err) } defer res.Body.Close()

// Analisar o HTML doc, err := goquery.NewDocumentFromReader(res.Body) if err != nil { log.Fatal(err) }

// Extrair títulos h2 doc.Find("h2").Each(func(i int, s *goquery.Selection) { fmt.Printf("Título %d: %s", i+1, s.Text()) })

// Extrair todos os links doc.Find("a").Each(func(i int, s *goquery.Selection) { link, _ := s.Attr("href") text := s.Text() fmt.Printf("Link %d: %s (%s)", i+1, text, link) })}


Principais recursos do goquery:

  • Seletores CSS: suporte a todos os seletores padrão (classes, ID, atributos, pseudo-classes).
  • Encadeamento de métodos: Find().Filter().Each() — o código é escrito como no jQuery.
  • Extração de dados: métodos Text(), Html(), Attr().
  • Modificação do DOM: SetText(), SetHtml(), Append().


Para trabalhar com grandes volumes de dados, goquer

Recommendations