Explorando el Web Scraping con Golang a través de Colly

fuenrob

Roberto Morais

Posted on July 26, 2024

Explorando el Web Scraping con Golang a través de Colly

¡Hola, Gopher! 🌐 Hoy quiero compartir contigo una de mis experiencias más recientes usando un framework de Golang que me ha encantado: ¡Colly! Si alguna vez has necesitado hacer web scraping, ya sabes lo importante que es contar con herramientas eficientes y fáciles de usar. Colly es justamente eso y más. 🚀

¿Qué es Colly?

Colly es un framework de web scraping para Golang que te permite extraer datos de sitios web de manera rápida y sencilla. Una de las cosas que más me gustan de Colly es su simplicidad y potencia. Puedes ponerlo a trabajar en minutos y obtener resultados impresionantes sin mucha complicación.

Características principales de Colly:

  • Fácil de usar: Una API sencilla que te permite configurar y ejecutar tus scrapers rápidamente.
  • Altamente eficiente: Maneja múltiples solicitudes concurrentes sin sudar.
  • Extensible: Con soporte para middlewares, puedes personalizar tu scraping fácilmente.
  • Rápido y seguro: Diseñado para ser rápido y evitar ser bloqueado por los sitios que scrapeas.

Manos a la obra: Un ejemplo básico

Para mostrarte lo fácil que es empezar con Colly, vamos a hacer un ejemplo básico donde scrapeamos los títulos de los posts más recientes de dev.to. 🎉

Primero, necesitamos instalar Colly. Si no lo tienes, puedes hacerlo con:

go get -u github.com/gocolly/colly
Enter fullscreen mode Exit fullscreen mode

Con Colly instalado, vamos a escribir un pequeño script. Lo primero es importar los paquetes necesarios y configurar nuestro scraper:

package main

import (
    "fmt"
    "log"

    "github.com/gocolly/colly"
)

func main() {
    // Crear un nuevo colector
    c := colly.NewCollector()

    // Obtenemos todos los títulos con etiqueta h2
    c.OnHTML("h2.crayons-story__title", func(e *colly.HTMLElement) {
        fmt.Println("Título encontrado:", e.Text)
    })

    // Manejar errores
    c.OnError(func(_ *colly.Response, err error) {
        log.Println("Algo salió mal:", err)
    })

    // Iniciar el scraping en la página principal de dev.to
    c.Visit("https://dev.to")
}
Enter fullscreen mode Exit fullscreen mode

Explicando el código

  1. Importaciones y setup: Importamos los paquetes colly y los necesarios de Go. Luego, creamos un nuevo colector con colly.NewCollector().

  2. Definiendo el comportamiento: Utilizamos c.OnHTML para definir qué hacer cuando encontramos ciertos elementos. En este caso, estamos buscando todos los elementos h2 con la clase crayons-story__title, que es donde dev.to normalmente coloca los títulos de los posts.

  3. Manejo de errores: Con c.OnError, nos aseguramos de manejar cualquier error que pueda ocurrir durante el scraping.

  4. Visitando la página: Finalmente, usamos c.Visit para iniciar el scraping en la página principal de dev.to.

Resultados

Al ejecutar este script, deberías ver los títulos de los posts más recientes impresos en la consola. 🎉 ¡Fácil y rápido! Puedes modificar el selector h2 para ajustar qué información deseas extraer.

Ejecución del script

Para ejecutar el script, simplemente abre tu terminal y corre:

go run main.go
Enter fullscreen mode Exit fullscreen mode

Si todo va bien, deberías ver algo como esto en tu consola:

Título encontrado: Aprende Golang en 10 días
Título encontrado: Consejos para desarrolladores juniors
Enter fullscreen mode Exit fullscreen mode

Conclusión

Colly es una herramienta poderosa para cualquier desarrollador que necesite hacer web scraping en Golang. Su simplicidad y eficiencia hacen que sea una elección excelente tanto para proyectos pequeños como grandes. Espero que este pequeño tutorial te haya dado una buena introducción a Colly y te anime a probarlo en tus propios proyectos.

¿Tienes alguna experiencia usando Colly o alguna otra herramienta de scraping? ¡Déjame tus comentarios abajo! 👇

¡Hasta la próxima, y feliz scraping! 🕷️🕸️

💖 💪 🙅 🚩
fuenrob
Roberto Morais

Posted on July 26, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related