Introducción: Por qué Go es su nuevo mejor amigo en el mundo del parseo
Imagine una situación: necesita recopilar información de cientos de páginas web, procesarla y guardarla de forma estructurada. Python con sus BeautifulSoup y Scrapy parece la opción obvia. Pero, ¿y si le dijera que existe un lenguaje que lo hace más rápido, más fácil y con menor consumo de memoria? Le presento: parseo y scraping de datos en Go.
Go (o Golang) no es solo un lenguaje de moda de Google. Es una herramienta que convierte la escritura de parsers de una rutina en un placer. Gracias al soporte integrado de concurrencia (gorutinas), puede procesar docenas de páginas en paralelo sin preocuparse por bloqueos. Y su tipado estricto y velocidad de compilación hacen que el código sea confiable y eficiente.
En este artículo no enumeraremos funciones aburridamente. Escribiremos un parser real en Go, analizaremos las bibliotecas clave y mostraremos cómo crear scrapers que soporten la carga. Si quiere aprender a parsear sitios web en Go de forma rápida y eficiente, está en el lugar correcto.
¿Qué es el parseo y scraping, y para qué necesita Go?
Aclaremos conceptos de inmediato. Web scraping es el proceso de extraer datos de páginas web. Parseo (parsing) es el análisis del HTML o JSON obtenido para extraer la información deseada. Juntos forman un potente tándem para la recolección de datos.
¿Por qué elegir parseo en Go en lugar del habitual Python?
- Velocidad de ejecución: Go se compila en un binario que funciona mucho más rápido que Python interpretado. Esto es crítico al procesar millones de páginas.
- Ahorro de memoria: Las gorutinas (hilos ligeros) consumen solo unos pocos kilobytes, a diferencia de los hilos del SO. Puede ejecutar miles de solicitudes paralelas sin riesgo de fugas de memoria.
- Simplicidad de despliegue: El binario compilado no requiere instalar dependencias. Lo sube al servidor y el parser está listo para funcionar.
- Cliente HTTP integrado: La biblioteca estándar de Go ya contiene todo lo necesario para trabajar con la red. Sin dependencias adicionales.
Por lo tanto, si necesita un parser en Go que funcione como un reloj, ha elegido el lenguaje correcto.
Herramientas: Colly y Goquery: su kit básico
Antes de escribir código, conozcamos las herramientas principales. Para web scraping en Golang hay dos bibliotecas «de oro»:
Colly — el rey del scraping asíncrono
Colly es un framework de scraping que incorpora las mejores prácticas. Soporta solicitudes paralelas, gestión de cookies, espera automática entre solicitudes (para que no lo bloqueen) e incluso almacenamiento en caché. Colly funciona sobre Goquery para el parseo de HTML.
Goquery — jQuery para Go
Goquery es una biblioteca que permite seleccionar elementos HTML mediante selectores CSS, exactamente como se hace en jQuery. Si alguna vez escribió $(".my-class").text() en JavaScript, Goquery le resultará familiar.
La instalación es sencilla:
go get github.com/gocolly/colly/v2go get github.com/PuerkitoBio/goqueryAhora tenemos todo para crear un parser en Go.
Escribimos un parser real: recopilamos titulares de noticias
Como ejemplo, escribamos un scraper que recopile titulares de noticias de un sitio agregador (por ejemplo, Hacker News o cualquier otro feed de noticias). Parsearemos HTML y mostraremos los resultados en la consola.
Cree un archivo main.go y escriba el siguiente código:
package main
import (\t"fmt"\t"log"
\t"github.com/gocolly/colly/v2")\