中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Golang爬蟲框架colly使用的方法介紹

發布時間:2023-11-03 10:55:03 來源:億速云 閱讀:167 作者:栢白 欄目:開發技術

今天小編給大家分享的是Golang爬蟲框架colly使用的方法介紹,相信很多人都不太了解,為了讓大家更加了解,所以給大家總結了以下內容,一起往下看吧。一定會有所收獲的哦。

Golang 是一門非常適合編寫網絡爬蟲的語言,它有著高效的并發處理能力和豐富的網絡編程庫。下面是一個簡單的 Golang 網絡爬蟲示例:

package main
import (
    "fmt"
    "net/http"
    "io/ioutil"
    "regexp"
)
func main() {
    resp, err := http.Get("https://www.example.com")
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    re := regexp.MustCompile("<title>(.*)</title>")
    title := re.FindStringSubmatch(string(body))[1]
    fmt.Println("Title:", title)
}

這個爬蟲的功能是獲取指定網站的標題。代碼中使用了 Go 的標準庫 net/http 和 regexp 來進行網絡請求和正則表達式匹配。當然,這只是一個簡單的示例,實際上爬蟲需要考慮更多的問題,比如反爬蟲、數據存儲、并發控制等等。

gocolly是用go實現的網絡爬蟲框架,我這里用來測試的版本是:colly “github.com/gocolly/colly/v2”

gocolly的網絡爬蟲還是很強大,下面我們通過代碼來看一下這個功能的使用

package main
import (
  "fmt"
  colly "github.com/gocolly/colly/v2"
  "github.com/gocolly/colly/v2/debug"
)
func main() {
  mUrl := "http://www.ifeng.com/"
  //colly的主體是Collector對象,管理網絡通信和負責在作業運行時執行附加的回掉函數
  c := colly.NewCollector(
    // 開啟本機debug
    colly.Debugger(&debug.LogDebugger{}),
  )
  //發送請求之前的執行函數
  c.OnRequest(func(r *colly.Request) {
    fmt.Println("這里是發送之前執行的函數")
  })
  //發送請求錯誤被回調
  c.OnError(func(_ *colly.Response, err error) {
    fmt.Print(err)
  })
  //響應請求之后被回調
  c.OnResponse(func(r *colly.Response) {
    fmt.Println("Response body length:", len(r.Body))
  })
  //response之后會調用該函數,分析頁面數據
  c.OnHTML("div#newsList h2 a", func(e *colly.HTMLElement) {
    fmt.Println(e.Text)
  })
  //在OnHTML之后被調用
  c.OnScraped(func(r *colly.Response) {
    fmt.Println("Finished", r.Request.URL)
  })
  //這里是執行訪問url
  c.Visit(mUrl)
}

運行結果如下:

這里是發送之前執行的函數

[000001] 1 [     1 - request] map["url":"http://www.ifeng.com/"] (0s)
[000002] 1 [     1 - responseHeaders] map["status":"OK" "url":"http://www.ifeng.com/"] (64.9485ms)
Response body length:250326
Finished http://www.ifeng.com/
[000003] 1 [     1 - response] map["status":"OK" "url":"http://www.ifeng.com/"] (114.9949ms)
[000004] 1 [     1 - html] map["selector":"div#newsList h2 a" "url":"http://www.ifeng.com/"] (118.9926ms)
[000005] 1 [     1 - html] map["selector":"div#newsList h2 a" "url":"http://www.ifeng.com/"] (118.9926ms)
[000006] 1 [     1 - scraped] map["url":"http://www.ifeng.com/"] (118.9926ms)

總結一下:

回調函數的調用順序如下:

OnRequest在發起請求前被調用

OnError請求過程中如果發生錯誤被調用

OnResponse收到回復后被調用

OnHTML在OnResponse之后被調用,如果收到的內容是HTML

OnScraped在OnHTML之后被調用

關于Golang爬蟲框架colly使用的方法介紹就分享到這里了,希望以上內容可以對大家有一定的參考價值,可以學以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

水城县| 应城市| 仁寿县| 宣武区| 汉中市| 济阳县| 莎车县| 屯昌县| 衡山县| 屏东市| 清流县| 连州市| 军事| 孝义市| 济宁市| 镇沅| 拜城县| 武安市| 定襄县| 东海县| 冷水江市| 江口县| 上蔡县| 保康县| 来凤县| 乌兰察布市| 武平县| 西藏| 龙泉市| 本溪| 涟源市| 蛟河市| 乌苏市| 颍上县| 长顺县| 林西县| 桓台县| 都匀市| 达拉特旗| 枝江市| 阳西县|