Cómo usar geziyor para raspar la web

Anh Tuan
Data Science Expert
27-Sep-2024
Geziyor: Un potente marco de raspado web para Go
Geziyor es un marco moderno de raspado web para Go, diseñado para ofrecer herramientas poderosas para raspar sitios web y extraer datos de manera eficiente. A diferencia de muchas bibliotecas de raspado tradicionales, Geziyor enfatiza la facilidad de uso al tiempo que proporciona flujos de trabajo de raspado altamente personalizables.
Características clave:
- Soporte de concurrencia: Admite operaciones asíncronas, lo que le permite raspar varias páginas de forma concurrente, lo que aumenta el rendimiento.
- Personalización de solicitudes: Modifique fácilmente las solicitudes HTTP, incluidos los encabezados, las cookies y los parámetros personalizados.
- Aceleración automática: Ayuda a evitar activar los mecanismos antirraspado al espaciar las solicitudes a los servidores.
- Almacenamiento en caché y persistencia integrados: Admite el almacenamiento en caché de los datos y las respuestas raspados para evitar solicitudes redundantes.
- Extensibilidad: Ofrece ganchos para ampliar la funcionalidad o manejar eventos como la interceptación de solicitudes/respuestas, middleware personalizado y más.
- Admite servidores proxy: Integre fácilmente servidores proxy para rotar direcciones IP o eludir restricciones.
Prerrequisitos
Para usar Geziyor, asegúrese de tener:
- Go 1.12+ instalado desde el sitio web oficial de Go.
- Conocimiento básico del lenguaje Go.
Instalación
Para instalar Geziyor, puede ejecutar:
bash
go get -u github.com/geziyor/geziyor
Ejemplo básico: raspado web con Geziyor
Aquí hay un ejemplo simple para raspar un sitio web e imprimir los títulos de los artículos:
go
package main
import (
"github.com/geziyor/geziyor"
"github.com/geziyor/geziyor/client"
"github.com/PuerkitoBio/goquery"
"log"
)
func main() {
geziyor.NewGeziyor(&geziyor.Options{
StartURLs: []string{"https://news.ycombinator.com"},
ParseFunc: func(g *geziyor.Geziyor, r *client.Response) {
r.HTMLDoc.Find(".storylink").Each(func(i int, s *goquery.Selection) {
log.Println(s.Text())
})
},
}).Start()
}
Ejemplo avanzado: raspado con encabezados personalizados y solicitudes POST
A veces, necesita simular una interacción más compleja con el servidor, como iniciar sesión o interactuar con sitios web dinámicos. En este ejemplo, mostraremos cómo enviar un encabezado personalizado y una solicitud POST.
go
package main
import (
"github.com/geziyor/geziyor"
"github.com/geziyor/geziyor/client"
"log"
)
func main() {
geziyor.NewGeziyor(&geziyor.Options{
StartRequestsFunc: func(g *geziyor.Geziyor) {
g.Do(&client.Request{
Method: "POST",
URL: "https://httpbin.org/post",
Body: []byte(`{"username": "test", "password": "123"}`),
Headers: map[string]string{
"Content-Type": "application/json",
},
})
},
ParseFunc: func(g *geziyor.Geziyor, r *client.Response) {
log.Println(string(r.Body))
},
}).Start()
}
Manejo de cookies y sesiones en Geziyor
Es posible que deba administrar cookies o mantener sesiones durante el raspado. Geziyor simplifica la administración de cookies al manejar automáticamente las cookies para cada solicitud, y también puede personalizar el proceso de manejo de cookies si es necesario.
go
package main
import (
"github.com/geziyor/geziyor"
"github.com/geziyor/geziyor/client"
"log"
)
func main() {
geziyor.NewGeziyor(&geziyor.Options{
StartRequestsFunc: func(g *geziyor.Geziyor) {
g.Do(&client.Request{
URL: "https://httpbin.org/cookies/set?name=value",
})
},
ParseFunc: func(g *geziyor.Geziyor, r *client.Response) {
log.Println("Cookies:", r.Cookies())
},
}).Start()
}
Uso de servidores proxy con Geziyor
Para raspar un sitio web evitando restricciones o bloqueos de IP, puede enrutar sus solicitudes a través de un servidor proxy. Aquí se explica cómo configurar el soporte de proxy con Geziyor:
go
package main
import (
"github.com/geziyor/geziyor"
"github.com/geziyor/geziyor/client"
"log"
)
func main() {
geziyor.NewGeziyor(&geziyor.Options{
StartRequestsFunc: func(g *geziyor.Geziyor) {
g.Do(&client.Request{
URL: "https://httpbin.org/ip",
Proxy: "http://username:password@proxyserver:8080",
})
},
ParseFunc: func(g *geziyor.Geziyor, r *client.Response) {
log.Println(string(r.Body))
},
}).Start()
}
Manejo de captchas con Geziyor
Si bien Geziyor no resuelve captchas de forma nativa, puede integrarlo con un servicio de resolución de captchas como CapSolver. Así es como puede usar CapSolver para resolver captchas junto con Geziyor.
Ejemplo: Resolviendo ReCaptcha V2 usando Geziyor y CapSolver
Primero, necesita integrar CapSolver y manejar las solicitudes de desafíos de captcha.
go
package main
import (
"encoding/json"
"github.com/geziyor/geziyor"
"github.com/geziyor/geziyor/client"
"log"
"time"
)
const CAPSOLVER_KEY = "YourKey"
func createTask(url, key string) (string, error) {
payload := map[string]interface{}{
"clientKey": CAPSOLVER_KEY,
"task": map[string]interface{}{
"type": "ReCaptchaV2TaskProxyLess",
"websiteURL": url,
"websiteKey": key,
},
}
response, err := client.NewRequest().
Method("POST").
URL("https://api.capsolver.com/createTask").
JSON(payload).
Do()
if err != nil {
return "", err
}
var result map[string]interface{}
json.Unmarshal(response.Body, &result)
return result["taskId"].(string), nil
}
func getTaskResult(taskId string) (string, error) {
payload := map[string]interface{}{
"clientKey": CAPSOLVER_KEY,
"taskId": taskId,
}
for {
response, err := client.NewRequest().
Method("POST").
URL("https://api.capsolver.com/getTaskResult").
JSON(payload).
Do()
if err != nil {
return "", err
}
var result map[string]interface{}
json.Unmarshal(response.Body, &result)
if result["status"] == "ready" {
return result["solution"].(string), nil
}
time.Sleep(5 * time.Second)
}
}
func main() {
geziyor.NewGeziyor(&geziyor.Options{
StartRequestsFunc: func(g *geziyor.Geziyor) {
taskId, _ := createTask("https://example.com", "6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf")
solution, _ := getTaskResult(taskId)
g.Do(&client.Request{
Method: "POST",
URL: "https://example.com/submit",
Body: []byte(`g-recaptcha-response=` + solution),
})
},
ParseFunc: func(g *geziyor.Geziyor, r *client.Response) {
log.Println("Captcha Solved:", string(r.Body))
},
}).Start()
}
Optimizaciones de rendimiento con Geziyor
Geziyor sobresale en el manejo de tareas de raspado de alto volumen, pero el rendimiento se puede optimizar aún más ajustando ciertas opciones:
- Concurrencia: Aumente
ConcurrentRequestspara permitir varias solicitudes paralelas. - Retraso de la solicitud: Implemente un retraso entre las solicitudes para evitar la detección.
Ejemplo con concurrencia y retraso:
go
package main
import (
"github.com/geziyor/geziyor"
"github.com/geziyor/geziyor/client"
)
func main() {
geziyor.NewGeziyor(&geziyor.Options{
StartURLs: []string{"https://example.com"},
ParseFunc: func(g *geziyor.Geziyor, r *client.Response) {},
ConcurrentRequests: 10,
RequestDelay: 2,
}).Start()
}
Código de bonificación
Reclame su código de bonificación para las mejores soluciones de captcha en CapSolver: scrape. Después de canjearlo, obtendrá un bono adicional del 5% después de cada recarga, ilimitadas veces.

Conclusión
Geziyor es un marco de raspado web potente, rápido y flexible para Go, lo que lo convierte en una excelente opción para los desarrolladores que buscan crear sistemas de raspado escalables. Su soporte integrado para concurrencia, solicitudes personalizables y la capacidad de integrarse con servicios externos como CapSolver lo convierten en una herramienta ideal para tareas de raspado simples y avanzadas.
Ya sea que esté recopilando datos de blogs, sitios de comercio electrónico o creando canalizaciones de raspado personalizadas, Geziyor tiene las funciones que necesita para comenzar rápidamente y de manera eficiente.
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

¿Qué es la mejor extensión para resolver CAPTCHA 2026?
En el mundo en constante evolución de la seguridad en línea, los desafíos CAPTCHA se han convertido en un obstáculo común para los usuarios de internet...

Lucas Mitchell
12-Dec-2025

Lumiproxy: Proxy Premium para Raspado de Web y Recolección de Datos
En este artículo, mostraremos qué es Lumiproxy y los servicios que ofrecen.

Ethan Collins
12-Dec-2025

Genlogin: Revoluciona tu experiencia de automatización web
En este artículo, te mostraremos qué es Genlogin y los servicios que ofrecen.

Rajinder Singh
12-Dec-2025

Proxys.io: Proxys individuales para cualquier tarea
En este artículo, te mostraremos qué es Proxys.io y los servicios que ofrecen.

Nikolai Smirnov
12-Dec-2025

Tabproxy: Buen valor de proxy residencial en el extranjero
En este artículo, te mostraremos qué es Tabproxy y los servicios que ofrecen.

Lucas Mitchell
12-Dec-2025

Proxys Residenciales IP2World: Soluciones Líderes Globales de Proxy IP
En este artículo, les mostraremos qué es IP2World y los servicios que ofrecen.

Ethan Collins
12-Dec-2025

