推广 热搜:

Golang爬虫框架colly用的办法介绍

   日期:2024-10-13     来源:www.dcog88.com    作者:二手网    浏览:738    评论:0    
核心提示:[db:简介]

Golang 是一门很合适撰写互联网爬虫的语言,它有着高效的并发处置能力和丰富的互联网编程库。下面是一个简单的 Golang 互联网爬虫示例:

packagemainimport(fmtnet/httpio/ioutilregexp)funcmain(){resp,err:=http.Get(https://www.example.com)iferr!=nil{fmt.Println(Error:,err)return}deferresp.Body.Close()body,err:=ioutil.ReadAll(resp.Body)iferr!=nil{fmt.Println(Error:,err)return}re:=regexp.MustCompile(title(.*)/title)title:=re.FindStringSubmatch(string(body))[1]fmt.Println(Title:,title)}

这个爬虫的功能是获得指定网站的标题。代码中用了 Go 的规范库 net/http 和 regexp 来进行互联网请求和正则表达式匹配。当然,这只不过一个简单的示例,事实上爬虫需要考虑更多的问题,譬如反爬虫、数据存储、并发控制等等。

gocolly是用go达成的互联网爬虫框架,我这里用来测试的版本是:colly github.com/gocolly/colly/v2

gocolly的互联网爬虫还是非常强大,下面大家通过代码来看一下这个功能的用法

packagemainimport(fmtcollygithub.com/gocolly/colly/v2github.com/gocolly/colly/v2/debug)funcmain(){mUrl:=http://www.ifeng.com///colly的主体是Collector对象,管理互联网通信和负责在作业运行时实行附加的回掉函数c:=colly.NewCollector(//开启本机debugcolly.Debugger(debug.LogDebugger{}),)//发送请求之前的实行函数c.onRequest(func(r*colly.Request){fmt.Println(这里是发送之前实行的函数)})//发送请求错误被回调c.onError(func(_*colly.Response,errerror){fmt.Print(err)})//响应请求之后被回调c.onResponse(func(r*colly.Response){fmt.Println(Responsebodylength:,len(r.Body))})//response之后会调用该函数,剖析页面数据c.onHTML(div#newsListh2a,func(e*colly.HTMLElement){fmt.Println(e.Text)})//在OnHTML之后被调用c.onScraped(func(r*colly.Response){fmt.Println(Finished,r.Request.URL)})//这里是实行访问urlc.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 h2 a url:http://www.ifeng.com/] (118.9926ms)
[000005] 1 [ 1 - html] map[selector:div#newsList h2 a url:http://www.ifeng.com/] (118.9926ms)
[000006] 1 [ 1 - scraped] map[url:http://www.ifeng.com/] (118.9926ms)

总结一下:

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

OnRequest在发起请求前被调用

OnError请求过程中假如发生错误被调用

OnResponse收到回复后被调用

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

OnScraped在OnHTML之后被调用

 
标签: Golang
打赏
 
更多>同类二手资讯
0相关评论

热门推荐
推荐图文
推荐二手资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  免责声明  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报