文件

快速開始

安裝 go-browser、設定前置需求,並用 Go 發出第一次頁面擷取。

前置需求

需求 版本 說明
Go 1.21+ 需支援 Module
Chrome / Chromium 最新 安裝於系統 PATH 或標準位置

go-browser 底層使用 go-rod,會自動偵測系統中的 Chrome 位置。macOS 檢查 /Applications/Google Chrome.app;Linux 依序搜尋 google-chromegoogle-chrome-stablechromiumchromium-browser

安裝

go get github.com/pardnchiu/go-browser

基本用法

1. 以 Markdown 格式擷取頁面

package main

import (
    "context"
    "fmt"
    "time"

    goBrowser "github.com/pardnchiu/go-browser"
)

func main() {
    ctx := context.Background()
    result, err := goBrowser.Fetch(ctx, "https://example.com", 30*time.Second, nil)
    if err != nil {
        panic(err)
    }
    fmt.Println("Title:", result.Title)
    fmt.Println("Content:", result.Content)
}

2. 使用自訂選項擷取

opt := &goBrowser.Option{
    IdleWait:  3 * time.Second,
    MaxLength: 50000,
    Headless:  true,
    Type:      goBrowser.TypeHTML,
    Viewport:  &goBrowser.Viewport{Width: 1920, Height: 1080},
}

result, err := goBrowser.Fetch(ctx, "https://example.com", 30*time.Second, opt)
opt := &goBrowser.Option{
    SameSession: true,
    Profile:     "Default",
}

result, err := goBrowser.Fetch(ctx, "https://github.com", 30*time.Second, opt)

此模式會從本機 Chrome 設定檔提取 Cookie 並注入至臨時瀏覽器實例。

4. 互動式分頁操作

tabID, err := goBrowser.CreateTab(ctx, "https://example.com", nil)
if err != nil {
    panic(err)
}
defer goBrowser.CloseTab(tabID)

// 點擊按鈕
goBrowser.TabClick(tabID, "#submit-btn")

// 輸入文字
goBrowser.TabType(tabID, "#search-input", "hello world")

// 向下滾動
goBrowser.TabScroll(tabID, 3)

// 擷取快照
result, _ := goBrowser.TabSnapshot(tabID)
fmt.Println(result.Content)

5. 輸出為 JSON 樹

opt := &goBrowser.Option{
    Type: goBrowser.TypeJSON,
}

result, err := goBrowser.Fetch(ctx, "https://example.com", 30*time.Second, opt)
fmt.Println(result.Content) // JSON 字串,含結構化樹狀資料

清理

完成後呼叫 goBrowser.Close() 釋放所有瀏覽器資源:

defer goBrowser.Close()

並發

設定最大並發頁面載入數:

goBrowser.SetMaxConcurrency(16)

預設並發限制為 8。

EN