快速開始
安裝 go-browser、設定前置需求,並用 Go 發出第一次頁面擷取。
前置需求
| 需求 | 版本 | 說明 |
|---|---|---|
| Go | 1.21+ | 需支援 Module |
| Chrome / Chromium | 最新 | 安裝於系統 PATH 或標準位置 |
go-browser 底層使用 go-rod,會自動偵測系統中的 Chrome 位置。macOS 檢查 /Applications/Google Chrome.app;Linux 依序搜尋 google-chrome、google-chrome-stable、chromium、chromium-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)
3. 使用 Cookie 會話存取需登入頁面
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。