ProdutosIntegraçõesRecursosDocumentaçãoPreços
Começar agora

© 2026 CapSolver. All rights reserved.

Contacte-nos

Slack: lola@capsolver.com

Produtos

  • reCAPTCHA v2
  • reCAPTCHA v3
  • Cloudflare Turnstile
  • Cloudflare Challenge
  • AWS WAF
  • Extensão de Navegador
  • Mais tipos de CAPTCHA

Integrações

  • Selenium
  • Playwright
  • Puppeteer
  • n8n
  • Parceiros
  • Ver todas as integrações

Recursos

  • Programa de Referenciação
  • Documentação
  • Referência da API
  • Blog
  • FAQ
  • Glossário
  • Estado

Legal

  • Termos de Serviço
  • Política de Privacidade
  • Política de Reembolso
  • Não vender os meus dados pessoais
Blog/All/Como usar geziyor para Web Scraping
Oct07, 2024

Como usar geziyor para Web Scraping

Emma Foster

Emma Foster

Machine Learning Engineer

Geziyor: Uma Estrutura Poderosa de Raspagem da Web para Go

Geziyor é uma estrutura moderna de raspagem da web para Go, projetada para oferecer ferramentas poderosas para raspar sites e extrair dados de forma eficiente. Ao contrário de muitas bibliotecas de raspagem tradicionais, o Geziyor enfatiza a facilidade de uso, ao mesmo tempo em que fornece fluxos de trabalho de raspagem altamente personalizáveis.

Recursos Chave:

  • Suporte à Concorrência: Ele suporta operações assíncronas, permitindo que você raspa várias páginas simultaneamente, o que aumenta o desempenho.
  • Personalização de Solicitações: Modifique facilmente as solicitações HTTP, incluindo cabeçalhos, cookies e parâmetros personalizados.
  • Controle Automático: Ajuda a evitar a ativação de mecanismos anti-raspagem ao espaçar as solicitações para os servidores.
  • Cache e Persistência Integrados: Ele suporta o cache de dados raspados e respostas para evitar solicitações redundantes.
  • Extensibilidade: Oferece ganchos para estender a funcionalidade ou lidar com eventos como interceptação de solicitação/resposta, middlewares personalizados e muito mais.
  • Suporta Proxies: Integre facilmente proxies para girar IPs ou contornar restrições.

Pré-requisitos

Para usar o Geziyor, certifique-se de que você tenha:

  • Go 1.12+ instalado a partir do site oficial do Go.
  • Conhecimento básico da linguagem Go.

Instalação

Para instalar o Geziyor, você pode executar:

bash Copy
go get -u github.com/geziyor/geziyor

Exemplo Básico: Raspagem da Web com Geziyor

Aqui está um exemplo simples para raspar um site e imprimir os títulos dos artigos:

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

Exemplo Avançado: Raspagem com Cabeçalhos Personalizados e Solicitações POST

Às vezes, você precisa simular uma interação mais complexa com o servidor, como fazer login ou interagir com sites dinâmicos. Neste exemplo, mostraremos como enviar um cabeçalho personalizado e uma solicitação 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()
}

Lidando com Cookies e Sessões no Geziyor

Você pode precisar gerenciar cookies ou manter sessões durante a raspagem. O Geziyor simplifica o gerenciamento de cookies ao lidar automaticamente com cookies para cada solicitação, e você também pode personalizar o processo de gerenciamento de cookies se necessário.

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

Usando Proxies com Geziyor

Para raspar um site, evitando restrições ou bloqueios de IP, você pode direcionar suas solicitações por meio de um proxy. Aqui está como configurar o suporte de proxy com o 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()
}

Lidando com Captchas com Geziyor

Embora o Geziyor não resolva captchas nativamente, você pode integrá-lo com um serviço de resolução de captcha, como o CapSolver. Aqui está como você pode usar o CapSolver para resolver captchas em conjunto com o Geziyor.

Exemplo: Resolvendo ReCaptcha V2 Usando Geziyor e CapSolver

Primeiro, você precisa integrar o CapSolver e lidar com solicitações para desafios 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()
}

Otimizações de Desempenho com Geziyor

O Geziyor se destaca no tratamento de tarefas de raspagem de alto volume, mas o desempenho pode ser ainda mais otimizado ajustando algumas opções:

  • Concorrência: Aumente ConcurrentRequests para permitir várias solicitações paralelas.
  • Atraso na Solicitação: Implemente um atraso entre as solicitações para evitar a detecção.

Exemplo com concorrência e atraso:

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 Bônus

Pegue seu Código Bônus para as melhores soluções de captcha no CapSolver: scrape. Depois de resgatá-lo, você receberá um bônus extra de 5% após cada recarga, ilimitadas vezes.

Conclusão

O Geziyor é uma estrutura de raspagem da web poderosa, rápida e flexível para Go, tornando-a uma ótima escolha para desenvolvedores que desejam construir sistemas de raspagem escalonáveis. Seu suporte integrado para concorrência, solicitações personalizáveis e a capacidade de integrar com serviços externos como o CapSolver tornam-na uma ferramenta ideal para tarefas de raspagem simples e avançadas.

Se você está coletando dados de blogs, sites de comércio eletrônico ou construindo pipelines de raspagem personalizados, o Geziyor possui os recursos de que você precisa para começar rapidamente e com eficiência.

Ver mais

n8nMar 09, 2026

Como Resolver reCAPTCHA v2/v3 Usando CapSolver e n8n

Bangun API solver eCAPTCHA v2/v3 menggunakan CapSolver dan n8n. Pelajari cara mengotomatisasi penyelesaian token, mengirimkannya ke website, dan mengekstrak data yang dilindungi tanpa coding.

Adélia Cruz
Adélia Cruz
Apr 22, 2026

Melhor IA para resolver quebra-cabeças de imagens: Melhores Ferramentas e Estratégias para 2026

Descubra a melhor IA para resolver quebra-cabeças de imagens. Aprenda como os APIs ImageToText e o Vision Engine da CapSolver automatizam desafios visuais complexos com alta precisão.

Índice

Adélia Cruz
Adélia Cruz
web scrapingApr 22, 2026

Arquitetura de Web Scraping em Rust para Extração de Dados Escalável

Aprenda arquitetura de raspagem web escalável em Rust com reqwest, scraper, raspagem assíncrona, raspagem de navegador headless, rotação de proxies e tratamento de CAPTCHA compatível.

Adélia Cruz
Adélia Cruz
Apr 22, 2026

API de Busca vs Cadeia de Suprimentos de Conhecimento: Guia da Infraestrutura de Dados de IA

Aprenda como ferramentas de API de busca, cadeias de suprimento de conhecimento, fluxos de trabalho da API SERP e pipelines de dados de IA modelam a infraestrutura de dados da web moderna para IA.

Adélia Cruz
Adélia Cruz