Web Scraping em Golang com Colly

Adélia Cruz
Neural Network Developer
04-Dec-2025

Web scraping é um método usado para extrair dados de sites. No Golang, a biblioteca Colly é uma ferramenta popular para web scraping devido à sua simplicidade e recursos poderosos. Este guia o levará por meio da configuração de um projeto Golang com o Colly, construção de um raspador básico, tratamento de cenários complexos de extração de dados e otimização dos seus raspadores com requisições concorrentes.
Configurando Seu Projeto em Golang
Antes de começar, certifique-se de que o Go está instalado no seu sistema. Inicialize seu projeto e obtenha o pacote Colly com os seguintes comandos:
bash
go mod init my_scraper
go get -u github.com/gocolly/colly
Isso configura o diretório do seu projeto e instala o pacote Colly.
Resgatar Seu Código de Bônus do CapSolver
Aumente seu orçamento de automação instantaneamente!
Use o código de bônus CAPN ao recarregar sua conta do CapSolver para obter um bônus extra de 5% em cada recarga — sem limites.
Resgatar agora no seu Painel do CapSolver
.
Construindo um Raspador Básico
Vamos criar um raspador básico para extrair todos os links de uma página específica do Wikipedia.
- Crie um novo arquivo
main.goe adicione o seguinte código:
go
package main
import (
"fmt"
"github.com/gocolly/colly"
)
func main() {
c := colly.NewCollector(
colly.AllowedDomains("en.wikipedia.org"),
)
c.OnHTML(".mw-parser-output", func(e *colly.HTMLElement) {
links := e.ChildAttrs("a", "href")
fmt.Println(links)
})
c.Visit("https://en.wikipedia.org/wiki/Web_scraping")
}
Este código inicializa um novo coletor do Colly restrito a en.wikipedia.org, em seguida, configura um callback para encontrar e imprimir todos os links dentro do div .mw-parser-output da página.
Raspagem de Dados de Tabela
Para tarefas mais complexas, como raspagem de dados de tabela e gravação em um arquivo CSV, você pode usar o pacote encoding/csv no Go:
- Estenda o
main.gocom o seguinte código para raspar dados de tabela:
go
package main
import (
"encoding/csv"
"log"
"os"
"github.com/gocolly/colly"
)
func main() {
fName := "data.csv"
file, err := os.Create(fName)
if err != nil {
log.Fatalf("Não foi possível criar o arquivo, err: %q", err)
return
}
defer file.Close()
writer := csv.NewWriter(file)
defer writer.Flush()
c := colly.NewCollector()
c.OnHTML("table.wikitable", func(e *colly.HTMLElement) {
e.ForEach("tr", func(_ int, row *colly.HTMLElement) {
rowData := []string{}
row.ForEach("td", func(_ int, cell *colly.HTMLElement) {
rowData = append(rowData, cell.Text)
})
writer.Write(rowData)
})
})
c.Visit("https://en.wikipedia.org/wiki/List_of_programming_languages")
}
Este script raspa dados de tabela de uma página do Wikipedia e os escreve no data.csv.
Fazendo Requisições Concorrentes
Para acelerar a raspagem, você pode fazer requisições concorrentes usando goroutines do Go. Aqui está como você pode raspar múltiplas páginas concorrentemente:
go
package main
import (
"fmt"
"github.com/gocolly/colly"
"sync"
)
func scrape(url string, wg *sync.WaitGroup) {
defer wg.Done()
c := colly.NewCollector()
c.OnHTML("title", func(e *colly.HTMLElement) {
fmt.Println("Título encontrado:", e.Text)
})
c.Visit(url)
}
func main() {
var wg sync.WaitGroup
urls := []string{
"https://en.wikipedia.org/wiki/Web_scraping",
"https://en.wikipedia.org/wiki/Data_mining",
"https://en.wikipedia.org/wiki/Screen_scraping",
}
for _, url := range urls {
wg.Add(1)
go scrape(url, &wg)
}
wg.Wait()
}
Neste exemplo, definimos uma função scrape que recebe uma URL e um grupo de espera como argumentos. A função inicializa um coletor do Colly, configura um callback para imprimir o título da página e visita a URL. A função main cria um grupo de espera, itera sobre uma lista de URLs e inicia uma goroutine para cada URL para raspar concorrentemente.
Ao seguir estes passos, você pode construir raspadores robustos em Golang usando o Colly, lidar com diversos cenários de raspagem e otimizar o desempenho com requisições concorrentes. Para tutoriais mais detalhados e uso avançado, consulte recursos sobre raspagem de web com Go e Colly.
Outras Bibliotecas para Raspagem de Web em Go
Além do Colly, existem várias outras excelentes bibliotecas para raspagem de web no Golang:
- GoQuery: Esta biblioteca oferece uma sintaxe e um conjunto de recursos semelhantes ao jQuery, permitindo que você execute operações de raspagem de web com facilidade, da mesma forma que faria com o jQuery.
- Ferret: Um sistema de raspagem de web portátil, extensível e rápido projetado para simplificar a extração de dados da web. O Ferret se concentra na extração de dados usando uma linguagem declarativa única.
- Selenium: Conhecido por suas capacidades de navegador sem interface gráfica, o Selenium é ideal para raspar conteúdo dinâmico. Embora não tenha suporte oficial para Go, existe uma versão portada que permite seu uso em projetos Go.
Conclusão
A raspagem de web é uma habilidade poderosa e essencial para extrair dados de sites de forma eficiente. Usando o Golang e a biblioteca Colly, você pode construir raspadores robustos que lidam com diversos cenários de extração de dados, desde a coleta de links simples até a extração de dados de tabelas complexas e otimizar o desempenho com requisições concorrentes.
Neste guia, você aprendeu como:
- Configurar um projeto Golang com a biblioteca Colly.
- Construir um raspador básico para extrair links de uma página da web.
- Lidar com extração de dados mais complexos, como raspar dados de tabelas e salvá-los em um arquivo CSV.
- Otimizar seus raspadores fazendo requisições concorrentes.
Ao seguir estes passos, você pode criar raspadores de web eficazes e eficientes no Golang, aproveitando a simplicidade e os recursos poderosos do Colly. Para uso avançado e tutoriais detalhados, explore recursos adicionais sobre raspagem de web com Go e Colly.
Perguntas Frequentes
1. O Colly é adequado para iniciantes que estão aprendendo raspagem de web no Golang?
Sim. O Colly foi projetado para ser simples e amigável para iniciantes, oferecendo recursos poderosos como parsing de DOM, tratamento de requisições, callbacks e concorrência. Mesmo desenvolvedores novos em Go podem rapidamente construir um raspador funcional com apenas algumas linhas de código.
2. O Colly pode raspar conteúdo estruturado, como tabelas ou listas?
Absolutamente. O Colly permite a seleção de nós e atributos específicos do HTML, o que torna fácil extrair tabelas, listas, links e outros elementos estruturados. Você também pode armazenar os resultados diretamente em arquivos como CSV ou JSON usando as bibliotecas padrão do Go.
3. Como posso acelerar meu raspador web do Colly?
Você pode usar as goroutines do Go para processar múltiplas páginas em paralelo. Ao lançar raspadores concorrentemente e sincronizá-los com um grupo de espera, o desempenho da raspagem aumenta significativamente — especialmente para conjuntos de dados grandes ou tarefas de varredura de múltiplas URLs.
Declaração de Conformidade: As informações fornecidas neste blog são apenas para fins informativos. A CapSolver está comprometida em cumprir todas as leis e regulamentos aplicáveis. O uso da rede CapSolver para atividades ilegais, fraudulentas ou abusivas é estritamente proibido e será investigado. Nossas soluções de resolução de captcha melhoram a experiência do usuário enquanto garantem 100% de conformidade ao ajudar a resolver dificuldades de captcha durante a coleta de dados públicos. Incentivamos o uso responsável de nossos serviços. Para mais informações, visite nossos Termos de Serviço e Política de Privacidade.
Mais

Como resolver Captcha no Maxun com Integração do CapSolver
Um guia prático para integrar o CapSolver com o Maxun para raspagem de web realista. Aprenda como lidar com reCAPTCHA, Cloudflare Turnstile e sites protegidos por CAPTCHA usando fluxos de trabalho de pré-autenticação e robô.

Adélia Cruz
21-Jan-2026

Como resolver Captcha no Browser4 com integração do CapSolver
Automação do Browser4 de alto throughput combinada com o CapSolver para lidar com desafios de CAPTCHA na extração de dados da web em larga escala.

Adélia Cruz
21-Jan-2026

O que é um bot de raspagem e como construir um
Aprenda o que é um bot de raspagem e como criar um para extração automática de dados. Descubra os melhores ferramentas, técnicas de navegação segura e práticas éticas de raspagem.

Adélia Cruz
16-Jan-2026

Melhor Resolutor de reCAPTCHA 2026 para Automação & Web Scraping
Descubra os melhores solucionadores de reCAPTCHA para automação e raspagem de dados da web em 2026. Aprenda como eles funcionam, escolha o adequado e fique à frente da detecção de bots.

Rajinder Singh
15-Jan-2026

Scrapy vs. Selenium: Qual é o melhor para o seu projeto de raspagem de web
Descubra as vantagens e diferenças entre o Scrapy e o Selenium para raspagem de dados. Aprenda qual ferramenta é a mais adequada para o seu projeto e como lidar com desafios como CAPTCHAs.

Anh Tuan
14-Jan-2026

Como Usar o Selenium Driverless para Web Scraping Eficiente
Aprenda como usar o Selenium Driverless para raspagem de web eficiente. Este guia fornece instruções passo a passo para configurar seu ambiente, escrever seu primeiro script Selenium Driverless e lidar com conteúdo dinâmico. Simplifique suas tarefas de raspagem de web evitando as complexidades da gestão tradicional do WebDriver, tornando seu processo de extração de dados mais simples, mais rápido e mais portátil.

Emma Foster
14-Jan-2026


.