Golang 网络爬虫框架 gocolly

2020年9月19日 284点热度 0人点赞 0条评论
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爱好者值得关注

图片

66360Golang 网络爬虫框架 gocolly

这个人很懒,什么都没留下

文章评论