您好,登錄后才能下訂單哦!
今天小編給大家分享的是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使用的方法介紹就分享到這里了,希望以上內容可以對大家有一定的參考價值,可以學以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。