ProductosIntegracionesRecursosDocumentaciónPrecios
Empezar ahora

© 2026 CapSolver. All rights reserved.

Contáctenos

Slack: lola@capsolver.com

Productos

  • reCAPTCHA v2
  • reCAPTCHA v3
  • Cloudflare Turnstile
  • Cloudflare Challenge
  • AWS WAF
  • Extensión de navegador
  • Más tipos de CAPTCHA

Integraciones

  • Selenium
  • Playwright
  • Puppeteer
  • n8n
  • Socios
  • Ver todas las integraciones

Recursos

  • Programa de referidos
  • Documentación
  • Referencia de API
  • Blog
  • Preguntas frecuentes
  • Glosario
  • Estado

Legal

  • Términos de servicio
  • Política de privacidad
  • Política de reembolso
  • No vender mi información personal
Blog/All/Cómo usar geziyor para raspar la web
Oct07, 2024

Cómo usar geziyor para raspar la web

Anh Tuan

Anh Tuan

Data Science Expert

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 Copy
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 Copy
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 Copy
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 Copy
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 Copy
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 Copy
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 ConcurrentRequests para 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 Copy
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.

Ver más

n8nMar 09, 2026

Cómo Resolver reCAPTCHA v2/v3 Usando CapSolver y n8n

Crea una API para resolver reCAPTCHA v2/v3 utilizando CapSolver y n8n. Aprende a automatizar la obtención de tokens, enviarlos a los sitios web y extraer datos protegidos sin necesidad de programar.

Aloísio Vítor
Aloísio Vítor
Apr 22, 2026

Mejor IA para resolver acertijos de imágenes: Mejores herramientas y estrategias para 2026

Descubre la mejor inteligencia artificial para resolver acertijos de imágenes. Aprende cómo el Motor de Visión de CapSolver y las APIs ImageToText automatizan desafíos visuales complejos con alta precisión.

Contenido

Aloísio Vítor
Aloísio Vítor
web scrapingApr 22, 2026

Arquitectura de raspado de web para extracción de datos escalable

Aprende una arquitectura de raspado web escalable en Rust con reqwest, scraper, raspado asíncrono, raspado con navegador sin cabeza, rotación de proxies y manejo de CAPTCHA conforme.

Aloísio Vítor
Aloísio Vítor
Apr 22, 2026

API de búsqueda vs. Cadena de suministro de conocimiento: Guía de infraestructura de datos de IA

Aprende cómo las herramientas de API de búsqueda, las cadenas de suministro de conocimiento, los flujos de trabajo de API SERP y las tuberías de datos de IA modelan la infraestructura de datos web moderna para la IA.

Aloísio Vítor
Aloísio Vítor