
Adélia Cruz
Neural Network Developer
Geziyor は、Go 用の最新の Web スクレイピングフレームワークであり、Web サイトをスクレイピングし、データを効率的に抽出するための強力なツールを提供するように設計されています。多くの従来のスクレイピングライブラリとは異なり、Geziyor は、高度にカスタマイズ可能なスクレイピングワークフローを提供しながら、使いやすさを重視しています。
Geziyor を使用するには、以下を確保してください。
Geziyor をインストールするには、次を実行できます。
go get -u github.com/geziyor/geziyor
以下は、Web サイトをスクレイピングして記事のタイトルを出力する簡単な例です。
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()
}
場合によっては、ログインや動的な Web サイトとの対話など、サーバーとのより複雑な対話をシミュレートする必要がある場合があります。この例では、カスタムヘッダーと 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()
}
スクレイピング中に Cookie を管理したり、セッションを維持する必要がある場合があります。Geziyor は、各リクエストの Cookie を自動的に処理することで、Cookie の管理を簡素化します。必要に応じて、Cookie の処理プロセスをカスタマイズすることもできます。
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()
}
IP 制限やブロックを回避しながら Web サイトをスクレイピングするには、リクエストをプロキシを経由してルーティングできます。以下は、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()
}
Geziyor は CAPTCHA をネイティブに解決しませんが、CapSolver などの CAPTCHA 解決サービスと統合できます。以下は、CapSolver を使用して Geziyor と連携して CAPTCHA を解決する方法です。
まず、CapSolver を統合し、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()
}
Geziyor は、大量のスクレイピングタスクの処理に優れていますが、特定のオプションを調整することでパフォーマンスをさらに最適化できます。
ConcurrentRequests を増やすことで、複数のリクエストを同時に実行できます。並行処理と遅延を適用した例:
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()
}
CapSolver: scrape にて、最高の CAPTCHA ソリューションのためのボーナスコード を請求してください。コードを適用すると、チャージごとに追加で 5% のボーナスが付与され、何度でも使用できます。

Geziyor は、Go 用の強力で高速かつ柔軟な Web スクレイピングフレームワークであり、スケーラブルなスクレイピングシステムを構築したい開発者にとって最適な選択肢です。並行処理、カスタマイズ可能なリクエスト、CapSolver などの外部サービスとの統合が組み込まれているため、シンプルで高度なスクレイピングタスクの両方に適したツールとなっています。
ブログ、e コマースサイトからデータを収集する場合でも、カスタムスクレイピングパイプラインを構築する場合でも、Geziyor は迅速かつ効率的に作業を開始するために必要な機能を提供します。
CapSolverとn8nを使用してeCAPTCHA v2/v3ソルバーAPIを構築します。トークンの自動取得、ウェブサイトへの送信、保護されたデータの抽出をノーコードで自動化する方法を学びます。

画像パズルを解く最高のAIを発見してください。CapSolverのVision EngineとImageToText APIが、高い精度で複雑な視覚的課題を自動化する方法を学びましょう。
