Colly para Go: guia completo com exemplos práticos

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

Colly para Go: guia completo de web scraping

1. O que é Colly e por que usar?

Colly é uma biblioteca poderosa e de alto desempenho para web scraping (raspagem de dados) na linguagem Go. Ela oferece uma interface limpa, assíncrona e facilmente extensível para extrair dados de sites. Colly é construída sobre os pacotes net/http e goquery (análogo ao jQuery para Go), permitindo que desenvolvedores usem a sintaxe familiar de seletores CSS para navegar pelo documento HTML.

Por que usar esta biblioteca? No mundo atual, dados são o novo petróleo. Web scraping automatiza a coleta de informações: monitoramento de preços de concorrentes, agregação de notícias, análise de métricas de SEO, criação de bancos de dados de produtos e muito mais. Colly se destaca por sua velocidade (arquitetura assíncrona com goroutines), suporte nativo a cache, gerenciamento automático de delays (para respeitar políticas dos sites) e um sistema flexível de callbacks.

A biblioteca é ideal tanto para scripts pequenos quanto para grandes sistemas distribuídos de coleta de dados. Graças à tipagem forte do Go e à ausência de runtime (diferente de Python/Node.js), aplicações Colly compilam em um único binário, simplificando deploy e escalabilidade.

2. Instalação

Para instalar o Colly, use o gerenciador de pacotes padrão do Go. Certifique-se de ter o Go versão 1.18 ou superior instalado.

go get -u github.com/gocolly/colly/v2

Após executar o comando, a biblioteca será adicionada ao seu arquivo go.mod. Também é recomendado instalar o goquery para trabalhar com HTML (ele será baixado automaticamente como dependência):

go get -u github.com/PuerkitoBio/goquery

3. Primeiros passos: exemplo mínimo

Vamos criar um scraper simples que exibe os títulos (tags <h1>) da página inicial do site example.com.

package main

import (
    "fmt"
    "github.com/gocolly/colly/v2"
)

func main() {
    // Cria um novo coletor
    c := colly.NewCollector()

    // Manipulador para páginas visitadas
    c.OnHTML("h1", func(e *colly.HTMLElement) {
        fmt.Println("Título:", e.Text)
    })

    // Manipulador de erros
    c.OnError(func(r *colly.Response, err error) {
        fmt.Println("Erro:", err)
    })

    // Inicia a raspagem
    c.Visit("https://example.com")
}

Execute o código com o comando go run main.go. Você verá o título da página. Esta é a base mínima para começar.

4. Principais métodos e funções (mínimo de 8)

Vamos explorar os métodos essenciais do Colly que cobrem 90% das tarefas de web scraping.

4.1 colly.NewCollector()

Assinatura: func NewCollector(options ...func(*Collector)) *Collector

O que faz: Cria uma nova instância do coletor — o objeto principal para gerenciar a raspagem. Aceita funções opcionais de configuração.

// Criando com configurações
c := colly.NewCollector(
    colly.AllowedDomains("example.com"), // Permitir apenas example.com
    colly.CacheDir("./cache"),           // Armazenar requisições em cache
)

4.2 Collector.Visit()

Assinatura: func (c *Collector) Visit(URL string) error

O que faz: Inicia uma requisição HTTP GET para a URL especificada. É o ponto de entrada para a raspagem.

err := c.Visit("https://exa                    

Recommendations