Colly是Go的爬虫框架,简单快速,适合日常工作获取数据。
安装
go get -u github.com/gocolly/colly/...
示例
package main
import (
"fmt"
"time"
"github.com/gocolly/colly"
)
func main() {
ua := "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
c := colly.NewCollector(
colly.UserAgent(ua), // 设置UA
colly.DetectCharset(), // 自动编码,防止乱码
colly.AllowedDomains("www.tcmap.com.cn"), // 限制域名
)
// 响应内容是HTML时调用
c.OnHTML("a[href*=\"shandong\"]", func(h *colly.HTMLElement) {
fmt.Println(h.Text)
h.Request.Visit(h.Attr("href"))
})
c.Limit(&colly.LimitRule{
DomainGlob: "*",
RandomDelay: 1 * time.Second, // 延时
})
// 请求前调用
c.OnRequest(func(r *colly.Request) {
fmt.Println("访问:", r.URL)
})
// 收到响应后调用
c.OnResponse(func(r *colly.Response) {
// fmt.Println(string(r.Body))
})
// 请求发生错误时调用
c.OnError(func(r *colly.Response, err error) {
fmt.Println(err)
})
c.Visit("http://www.tcmap.com.cn/shandong/")
}
参考链接
http://go-colly.org/docs/