Sản phẩmTích hợpTài nguyênTài liệuGiá cả
Bắt đầu ngay

© 2026 CapSolver. All rights reserved.

Liên hệ chúng tôi

Slack: lola@capsolver.com

Sản phẩm

  • reCAPTCHA v2
  • reCAPTCHA v3
  • Cloudflare Turnstile
  • Cloudflare Challenge
  • AWS WAF
  • Tiện ích trình duyệt
  • Thêm nhiều loại CAPTCHA

Tích hợp

  • Selenium
  • Playwright
  • Puppeteer
  • n8n
  • Đối tác
  • Xem tất cả tích hợp

Tài nguyên

  • Chương trình giới thiệu
  • Tài liệu
  • Tham chiếu API
  • Blog
  • Câu hỏi thường gặp
  • Thuật ngữ
  • Trạng thái

Pháp lý

  • Điều khoản dịch vụ
  • Chính sách bảo mật
  • Chính sách hoàn tiền
  • Không bán thông tin cá nhân của tôi
Blog/All/Cách sử dụng geziyor để Scrape Web
Oct07, 2024

Cách sử dụng geziyor để Scrape Web

Emma Foster

Emma Foster

Machine Learning Engineer

Geziyor: Khung web scraping mạnh mẽ cho Go

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.

Các tính năng chính:

  • Hỗ trợ đồng thời: Nó hỗ trợ các hoạt động bất đồng bộ, cho phép bạn scraping nhiều trang đồng thời, điều này giúp tăng hiệu suất.
  • Tùy chỉnh yêu cầu: Dễ dàng sửa đổi các yêu cầu HTTP, bao gồm tiêu đề, cookie và các tham số tùy chỉnh.
  • Điều tiết tự động: Giúp tránh kích hoạt các cơ chế chống scraping bằng cách điều chỉnh tốc độ các yêu cầu gửi đến máy chủ.
  • Lưu trữ cache và lưu trữ tích hợp: Nó hỗ trợ lưu trữ cache dữ liệu đã scraping và các phản hồi để tránh các yêu cầu trùng lặp.
  • Khả năng mở rộng: Cung cấp các móc để mở rộng chức năng hoặc xử lý các sự kiện như chặn yêu cầu/phản hồi, middleware tùy chỉnh, và hơn thế nữa.
  • Hỗ trợ proxy: Dễ dàng tích hợp proxy để luân phiên IP hoặc bỏ qua các hạn chế.

Điều kiện tiên quyết

Để sử dụng Geziyor, hãy đảm bảo bạn có:

  • Go 1.12+ được cài đặt từ trang web chính thức của Go.
  • Kiến thức cơ bản về ngôn ngữ Go.

Cài đặt

Để cài đặt Geziyor, bạn có thể chạy:

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

Ví dụ cơ bản: Web scraping với 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:

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

Ví dụ nâng cao: Scraping với tiêu đề tùy chỉnh và yêu cầu POST

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

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

Xử lý cookie và phiên trong Geziyor

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.

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

Sử dụng proxy với Geziyor

Để 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:

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

Xử lý Captcha với Geziyor

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.

Ví dụ: Giải quyết ReCaptcha V2 bằng Geziyor và CapSolver

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

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

Tối ưu hóa hiệu suất với Geziyor

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:

  • Đồng thời: Tăng ConcurrentRequests để cho phép nhiều yêu cầu song song.
  • Độ trễ yêu cầu: Áp dụng độ trễ giữa các yêu cầu để tránh bị phát hiện.

Ví dụ với đồng thời và độ trễ:

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

Mã thưởng

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.

Kết luậ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ả.

Xem thêm

n8nMar 09, 2026

Cách Giải reCAPTCHA v2/v3 Sử Dụng CapSolver và n8n

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.

Anh Tuan
Anh Tuan
Apr 22, 2026

Trí tuệ nhân tạo tốt nhất để giải các câu đố hình ảnh: Các công cụ và chiến lược hàng đầu cho năm 2026

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.

Anh Tuan

Nội dung

Anh Tuan
web scrapingApr 22, 2026

Kiến trúc Trích xuất Dữ liệu Từ Web bằng Rust cho Trích xuất Dữ liệu Có Thể Mở Rộng

Học kiến trúc gỡ mã web Rust có thể mở rộng với reqwest, scraper, gỡ mã bất đồng bộ, gỡ mã trình duyệt không đầu, xoay proxy và xử lý CAPTCHA tuân thủ.

Anh Tuan
Anh Tuan
Apr 22, 2026

API Tìm kiếm so với Chuỗi cung ứng tri thức: Hướng dẫn cơ sở hạ tầng dữ liệu AI

Học cách các công cụ API tìm kiếm, chuỗi cung ứng kiến thức, quy trình API SERP và dòng dữ liệu AI định hình cơ sở hạ tầng dữ liệu web hiện đại cho AI.

Anh Tuan
Anh Tuan