searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

golang爬虫的简单使用

2023-06-07 02:41:46
30
0

一、 环境安装

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()访问目标

0条评论
0 / 1000
杨晔
2文章数
0粉丝数
杨晔
2 文章 | 0 粉丝
杨晔
2文章数
0粉丝数
杨晔
2 文章 | 0 粉丝
原创

golang爬虫的简单使用

2023-06-07 02:41:46
30
0

一、 环境安装

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()访问目标

文章来自个人专栏
go爬虫
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
1
0