CAPSOLVER
Blog
Web Scraping en Golang con Colly

Raspado de web en Golang con Colly

Logo of CapSolver

Emma Foster

Machine Learning Engineer

04-Dec-2025

Scraping web es un método utilizado para extraer datos de sitios web. En Golang, la biblioteca Colly es una herramienta popular para el scraping web debido a su simplicidad y características potentes. Esta guía lo llevará a través de la configuración de un proyecto de Golang con Colly, la creación de un rascador básico, el manejo de escenarios de extracción de datos complejos y la optimización de sus rascadores con solicitudes concurrentes.

Configuración de su proyecto de Golang

Antes de comenzar, asegúrese de tener Go instalado en su sistema. Inicialice su proyecto y obtenga el paquete Colly con estos comandos:

bash Copy
go mod init my_scraper
go get -u github.com/gocolly/colly

Esto configura su directorio de proyecto e instala el paquete Colly.

Canjear su código de bonificación de CapSolver

Aumente su presupuesto de automatización de inmediato!
Use el código de bonificación CAPN al recargar su cuenta de CapSolver para obtener un 5% adicional en cada recarga — sin límites.
Canjéalo ahora en su Panel de control de CapSolver
.

Creación de un rascador básico

Creemos un rascador básico para extraer todos los enlaces de una página específica de Wikipedia.

  1. Cree un nuevo archivo main.go y agregue el siguiente código:
go Copy
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 un nuevo recolector de Colly restringido a en.wikipedia.org, luego establece un callback para encontrar e imprimir todos los enlaces dentro del div .mw-parser-output de la página.

Scraping de datos de tabla

Para tareas más complejas como el scraping de datos de tabla y su escritura en un archivo CSV, puede usar el paquete encoding/csv en Go:

  1. Extienda main.go con el siguiente código para extraer datos de tabla:
go Copy
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("No se pudo crear el archivo, 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 extrae datos de tabla de una página de Wikipedia y los escribe en data.csv.

Realizar solicitudes concurrentes

Para acelerar el scraping, puede realizar solicitudes concurrentes usando goroutines de Go. Así es como puede raspar varias páginas simultáneamente:

go Copy
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()
}

En este ejemplo, definimos una función scrape que toma una URL y un grupo de espera como argumentos. La función inicializa un recolector de Colly, establece un callback para imprimir el título de la página y visita la URL. La función main crea un grupo de espera, itera sobre una lista de URLs y inicia una goroutine para cada URL para raspar de forma concurrente.

Siguiendo estos pasos, puede crear rascadores robustos en Golang usando Colly, manejar diversos escenarios de scraping y optimizar el rendimiento con solicitudes concurrentes. Para más tutoriales detallados y uso avanzado, consulte recursos sobre scraping web con Go y Colly.

Otras bibliotecas para scraping web en Go

Además de Colly, existen varias otras excelentes bibliotecas para el scraping web en Golang:

  • GoQuery: Esta biblioteca ofrece una sintaxis y un conjunto de características similares a jQuery, permitiéndole realizar operaciones de scraping web con facilidad, de manera similar a como lo haría en jQuery.
  • Ferret: Un sistema de scraping web portátil, extensible y rápido diseñado para simplificar la extracción de datos de la web. Ferret se enfoca en la extracción de datos usando un lenguaje declarativo único.
  • Selenium: Conocido por sus capacidades de navegador sin cabeza, Selenium es ideal para raspar contenido dinámico. Aunque no tiene soporte oficial para Go, existe un puerto disponible que permite su uso en proyectos de Golang.

Conclusión

El scraping web es una habilidad poderosa y esencial para extraer datos de manera eficiente de sitios web. Usando Golang y la biblioteca Colly, puede crear rascadores robustos que manejen diversos escenarios de extracción de datos, desde recopilar enlaces simples hasta extraer datos de tablas complejas y optimizar el rendimiento con solicitudes concurrentes.

En esta guía, aprendió cómo:

  1. Configurar un proyecto de Golang con la biblioteca Colly.
  2. Crear un rascador básico para extraer enlaces de una página web.
  3. Manejar extracciones de datos más complejas, como raspar datos de tablas y escribirlos en un archivo CSV.
  4. Optimizar sus rascadores realizando solicitudes concurrentes.

Siguiendo estos pasos, puede crear rascadores web efectivos y eficientes en Golang, aprovechando la simplicidad y las características potentes de Colly. Para un uso avanzado y tutoriales detallados, explore recursos adicionales sobre scraping web con Go y Colly.

Preguntas frecuentes

1. ¿Es Colly adecuado para principiantes que aprenden scraping web en Golang?

Sí. Colly está diseñado para ser simple y amigable para principiantes, mientras ofrece características potentes como análisis del DOM, manejo de solicitudes, callbacks y concurrencia. Incluso los desarrolladores nuevos en Go pueden crear rápidamente un rascador funcional con solo unas pocas líneas de código.


2. ¿Puede Colly raspar contenido estructurado como tablas o listas?

Absolutamente. Colly permite seleccionar nodos y atributos específicos de HTML, lo que hace fácil extraer tablas, listas, enlaces y otros elementos estructurados. También puede almacenar los resultados directamente en archivos como CSV o JSON usando las bibliotecas estándar de Go.


3. ¿Cómo puedo acelerar mi rascador de Colly?

Puede usar goroutines de Go para procesar varias páginas en paralelo. Al lanzar rascadores concurrentes y sincronizarlos con un grupo de espera, el rendimiento del scraping aumenta significativamente, especialmente para conjuntos de datos grandes o tareas de rastreo de múltiples URLs.

Aviso de Cumplimiento: La información proporcionada en este blog es solo para fines informativos. CapSolver se compromete a cumplir con todas las leyes y regulaciones aplicables. El uso de la red de CapSolver para actividades ilegales, fraudulentas o abusivas está estrictamente prohibido y será investigado. Nuestras soluciones para la resolución de captcha mejoran la experiencia del usuario mientras garantizan un 100% de cumplimiento al ayudar a resolver las dificultades de captcha durante el rastreo de datos públicos. Fomentamos el uso responsable de nuestros servicios. Para obtener más información, visite nuestros Términos de Servicio y Política de Privacidad.

Máse

Maxun con integración de CapSolver
Cómo resolver Captcha en Maxun con integración de CapSolver

Una guía práctica para integrar CapSolver con Maxun para el scraping de web en el mundo real. Aprende cómo manejar reCAPTCHA, Cloudflare Turnstile y sitios protegidos por CAPTCHA utilizando flujos de trabajo de pre-autenticación y robot.

web scraping
Logo of CapSolver

Adélia Cruz

21-Jan-2026

Browser4 con integración de CapSolver
Cómo resolver Captcha en Browser4 con integración de CapSolver

Automatización de Browser4 con alta capacidad de procesamiento combinada con CapSolver para el manejo de desafíos CAPTCHA en la extracción de datos web a gran escala.

web scraping
Logo of CapSolver

Aloísio Vítor

21-Jan-2026

¿Qué es un bot de scraping y cómo construir uno
¿Qué es un bot de scraping y cómo construir uno

Aprende qué es un bot de raspado y cómo construir uno para la extracción automatizada de datos. Descubre las mejores herramientas, técnicas de navegación segura y prácticas éticas de raspado.

web scraping
Logo of CapSolver

Emma Foster

15-Jan-2026

Scrapy vs. Selenium
Scrapy vs. Selenium: ¿Cuál es el mejor para tu proyecto de raspado web?

Descubre las fortalezas y diferencias entre Scrapy y Selenium para el web scraping. Aprende qué herramienta se adapta mejor a tu proyecto y cómo manejar desafíos como los CAPTCHAs.

web scraping
Logo of CapSolver

Ethan Collins

14-Jan-2026

Cómo usar Selenium Driverless para el raspado web eficiente
Cómo usar Selenium Driverless para un scraping web eficiente

Aprenda a usar Selenium Driverless para un raspado web eficiente. Esta guía proporciona instrucciones paso a paso para configurar su entorno, escribir su primer script de Selenium Driverless y manejar contenido dinámico. Optimice sus tareas de raspado web evitando las complejidades de la gestión tradicional de WebDriver, haciendo que su proceso de extracción de datos sea más sencillo, rápido y portátil.

web scraping
Logo of CapSolver

Rajinder Singh

14-Jan-2026

Solucionar errores 403 Prohibidos al crawlear sitios web con Python
Resolver errores 403 Prohibido al rastrear sitios web con Python

Aprende cómo superar errores 403 Prohibido al crawlear sitios web con Python. Este guía cubre la rotación de IP, el spoofing de user-agent, la limitación de solicitudes, el manejo de autenticación y el uso de navegadores headless para evadir restricciones de acceso y continuar con el scraping de web con éxito.

web scraping
Logo of CapSolver

Lucas Mitchell

13-Jan-2026