一、 环境安装
1. golang1.18 包下载:
https://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=https://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="https://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: https://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 https://hackerspaces.org
c.Visit("https://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()访问目标