
Emma Foster
Machine Learning Engineer
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.
Para usar o Geziyor, certifique-se de que você tenha:
Para instalar o Geziyor, você pode executar:
go get -u github.com/geziyor/geziyor
Aqui está um exemplo simples para raspar um site e imprimir os títulos dos artigos:
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()
}
À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.
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()
}
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.
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()
}
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:
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()
}
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.
Primeiro, você precisa integrar o CapSolver e lidar com solicitações para desafios de captcha.
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()
}
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:
ConcurrentRequests para permitir várias solicitações paralelas.Exemplo com concorrência e atraso:
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()
}
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.

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.
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.

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.
