Golang 网络爬虫框架 gocolly

Go语言精选

共 1914字,需浏览 4分钟

 · 2020-09-21

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 h1 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 h1 a" "url":"http://www.ifeng.com/"] (118.9926ms)[000005] 1 [     1 - html] map["selector":"div#newsList h1 a" "url":"http://www.ifeng.com/"] (118.9926ms)[000006] 1 [     1 - scraped] map["url":"http://www.ifeng.com/"] (118.9926ms)

总结一下:

回调函数的调用顺序如下:

  1. OnRequest在发起请求前被调用

  2. OnError请求过程中如果发生错误被调用

  3. OnResponse收到回复后被调用

  4. OnHTML在OnResponse之后被调用,如果收到的内容是HTML

  5. OnScraped在OnHTML之后被调用





推荐阅读




学习交流 Go 语言,扫码回复「进群」即可


站长 polarisxu

自己的原创文章

不限于 Go 技术

职场和创业经验


Go语言中文网

每天为你

分享 Go 知识

Go爱好者值得关注



浏览 69
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报