国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

Colly 錯(cuò)誤處理:讓爬蟲永不“崩潰”

2025-07-11 17:28 更新

網(wǎng)絡(luò)不穩(wěn)定、404、503 是常態(tài)。給爬蟲加 3 行“保險(xiǎn)絲”,出錯(cuò)也能優(yōu)雅記錄、自動(dòng)重試。

一、示例:

package main


import (
    "fmt"
    "time"


    "github.com/gocolly/colly/v2"
)


func main() {
    c := colly.NewCollector()


    // 1. 捕獲所有錯(cuò)誤
    c.OnError(func(r *colly.Response, err error) {
        fmt.Printf("? 爬取失?。?s\n狀態(tài)碼:%d\n錯(cuò)誤信息:%v\n",
            r.Request.URL, r.StatusCode, err)
    })


    // 2. 正常解析邏輯(如果無錯(cuò)誤才會(huì)觸發(fā))
    c.OnHTML("title", func(e *colly.HTMLElement) {
        fmt.Println("? 頁面標(biāo)題:", e.Text)
    })


    // 3. 故意訪問一個(gè) 404 頁面
    c.Visit("http://eska-fuses.cn/notfound")
}

運(yùn)行結(jié)果:

? 爬取失敗:http://eska-fuses.cn/notfound
狀態(tài)碼:404
錯(cuò)誤信息:Not Found

二、3 個(gè)實(shí)用技巧

技巧 代碼片段 作用
自動(dòng)重試 c.Retry(r, 3, 2*time.Second) 失敗后最多重試 3 次,間隔 2 秒
日志文件 log.SetOutput(f) 把錯(cuò)誤寫進(jìn) error.log
繼續(xù)爬 return nil 出錯(cuò)不 panic,繼續(xù)下一個(gè) URL

完整重試示例:

c.OnError(func(r *colly.Response, err error) {
    if r.StatusCode >= 500 {
        // 服務(wù)器錯(cuò)誤,重試
        _ = c.Retry(r, 3, 2*time.Second)
    } else {
        // 客戶端錯(cuò)誤,記錄并跳過
        fmt.Println("跳過不可恢復(fù)錯(cuò)誤:", err)
    }
})

三、1 分鐘實(shí)驗(yàn)

  1. 打開 Go 環(huán)境 → 新建 main.go。
  2. 復(fù)制上方“示例” → 把 URL 換成任意不存在的地址 → 運(yùn)行。
  3. 觀察終端:錯(cuò)誤信息、狀態(tài)碼一目了然。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)