一、 環境安裝
1. golang1.18 包下載:
//studygolang.com/dl/golang/go1.18.10.linux-amd64.tar.gz
2. 解壓:
tar zxf go1.18.10.linux-amd64.tar.gz -C /usr/local/ && ln -sf /usr/local/go/bin/go /bin/go
3. 設置環境變量:
go env -w GO111MODULE=on
go env -w GOPROXY=//goproxy.cn,direct
4. 驗證
# go version
go version go1.18.10 linux/amd64
# go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOENV="/root/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/root/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/root/go"
GOPRIVATE=""
GOPROXY="//goproxy.cn,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.18.10"
GCCGO="gccgo"
GOAMD64="v1"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build2614304592=/tmp/go-build -gno-record-gcc-switches"
二、golang爬蟲庫-colly
1. 簡介
colly 是用 Go 語言編寫的一個功能強大的爬蟲庫。它的主要特點是輕量、快速,設計非常優雅,并且分布式的支持也非常簡單,易于擴展。
github: //github.com/gocolly/colly
2. 例子
package main
import (
"fmt"
"github.com/gocolly/colly/v2"
)
func main() {
// Instantiate default collector
c := colly.NewCollector(
// Visit only domains: hackerspaces.org, wiki.hackerspaces.org
colly.AllowedDomains("hackerspaces.org", "wiki.hackerspaces.org"),
)
// On every a element which has href attribute call callback
c.OnHTML("a[href]", func(e *colly.HTMLElement) {
link := e.Attr("href")
// Print link
fmt.Printf("Link found: %q -> %s\n", e.Text, link)
// Visit link found on page
// Only those links are visited which are in AllowedDomains
c.Visit(e.Request.AbsoluteURL(link))
})
// Before making a request print "Visiting ..."
c.OnRequest(func(r *colly.Request) {
fmt.Println("Visiting", r.URL.String())
})
// Start scraping on //hackerspaces.org
c.Visit("//hackerspaces.org/")
}
3. 常用函數說明
1. 新建采集器
c := colly.NewCollector()
通過該方法可以創建一個簡單的colly采集器,這里面可以帶上不同的option 實現不同的采集約束,比如:
colly.AllowedDomains:約定只能采集指定域名的鏈接
2. 請求時處理
調用c.OnRequest()方法注冊請求回調,每次發送請求時執行該回調
3. 響應時處理
調用c.OnResponse()方法注冊響應回調,每次收到響應時執行該回調
4. 遇到錯誤時的處理
調用c.OnError()方法注冊錯誤回調,執行請求發生錯誤時執行該回調
5. HTML處理
調用c.OnHTML方法注冊HTML回調,解析爬取到的網頁,根據解析配置的解析器,提取相關目標
6. 訪問目標
調用c.Visit()訪問目標