
Emma Foster
Machine Learning Engineer
Geziyor là một khung web scraping hiện đại cho Go, được thiết kế để cung cấp các công cụ mạnh mẽ cho việc scraping các trang web và trích xuất dữ liệu một cách hiệu quả. Không giống như nhiều thư viện scraping truyền thống, Geziyor nhấn mạnh sự dễ sử dụng đồng thời cung cấp các luồng công việc scraping có thể tùy chỉnh cao.
Để sử dụng Geziyor, hãy đảm bảo bạn có:
Để cài đặt Geziyor, bạn có thể chạy:
go get -u github.com/geziyor/geziyor
Đây là một ví dụ đơn giản để scraping một trang web và in các tiêu đề của bài viết:
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()
}
Đôi khi, bạn cần mô phỏng tương tác phức tạp hơn với máy chủ, chẳng hạn như đăng nhập hoặc tương tác với các trang web động. Trong ví dụ này, chúng tôi sẽ trình bày cách gửi tiêu đề tùy chỉnh và yêu cầu 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()
}
Bạn có thể cần quản lý cookie hoặc duy trì phiên trong quá trình scraping. Geziyor đơn giản hóa việc quản lý cookie bằng cách tự động xử lý cookie cho mỗi yêu cầu, và bạn cũng có thể tùy chỉnh quy trình xử lý cookie nếu cần.
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()
}
Để scraping một trang web trong khi tránh các hạn chế hoặc chặn IP, bạn có thể định tuyến các yêu cầu của mình thông qua một proxy. Đây là cách cấu hình hỗ trợ proxy với 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()
}
Mặc dù Geziyor không giải quyết captcha một cách bản địa, bạn có thể tích hợp nó với dịch vụ giải quyết captcha như CapSolver. Đây là cách bạn có thể sử dụng CapSolver để giải quyết captcha kết hợp với Geziyor.
Đầu tiên, bạn cần tích hợp CapSolver và xử lý các yêu cầu đối với các thách thức 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 rất giỏi trong việc xử lý các tác vụ scraping khối lượng lớn, nhưng hiệu suất có thể được tối ưu hóa hơn bằng cách điều chỉnh một số tùy chọn:
ConcurrentRequests để cho phép nhiều yêu cầu song song.Ví dụ với đồng thời và độ trễ:
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()
}
Nhận Mã thưởng của bạn cho các giải pháp captcha hàng đầu tại CapSolver: scrape. Sau khi đổi mã, bạn sẽ nhận được thêm 5% tiền thưởng sau mỗi lần nạp tiền, không giới hạn số lần.

Geziyor là một khung web scraping mạnh mẽ, nhanh chóng và linh hoạt cho Go, là lựa chọn tuyệt vời cho các nhà phát triển muốn xây dựng hệ thống scraping có khả năng mở rộng. Hỗ trợ tích hợp cho đồng thời, yêu cầu có thể tùy chỉnh và khả năng tích hợp với các dịch vụ bên ngoài như CapSolver làm cho nó trở thành công cụ lý tưởng cho cả tác vụ scraping đơn giản và nâng cao.
Cho dù bạn đang thu thập dữ liệu từ blog, trang web thương mại điện tử hay xây dựng đường ống scraping tùy chỉnh, Geziyor có các tính năng bạn cần để bắt đầu nhanh chóng và hiệu quả.
Xây dựng API giải eCAPTCHA v2/v3 bằng CapSolver và n8n. Tìm hiểu cách tự động hóa việc giải token, gửi token đến website và trích xuất dữ liệu được bảo vệ mà không cần lập trình.

Khám phá AI tốt nhất để giải các câu đố hình ảnh. Học cách Vision Engine và APIs ImageToText của CapSolver tự động hóa các thách thức thị giác phức tạp với độ chính xác cao.
