分享
Golang 爬虫 Colly 入门
物干焯 · · 5264 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
1. 概述
gocolly是用go实现的网络爬虫框架gocolly快速优雅,在单核上每秒可以发起1K以上请求;以回调函数的形式提供了一组接口,可以实现任意类型的爬虫;依赖goquery库可以像jquery一样选择web元素。
gocolly的官方网站是http://go-colly.org/,提供了详细的文档和示例代码。
2. 安装配置
安装
go get -u github.com/gocolly/colly/...
引入包
import "github.com/gocolly/colly"
3. 流程说明
3.1. 使用流程
使用流程主要是说明使用colly抓取数据前的准备工作
- 初始化Collector对象, Collector对象是colly的全局句柄
- 设置全局设置,全局设置主要是设置colly 句柄的代理设置等
- 注册抓取回调函数, 主要是用于在抓取数据后在数据处理的各个流程提取数据以及出发其他操作
- 设置辅助工具,如抓取链接的存放队列,数据清洗队列等
- 注册抓取链接
- 启动程序开始抓取
3.2 抓取流程
每次抓取数据流程中的各个节点都会尝试触发用户注册的抓取回调函数,以完成提取数据等需求, 抓取流程如下。
- 根据链接每次准备抓取数据前调用 注册的 OnRequest做每次抓取前的预处理工作
- 当抓取数据失败时会调用OnError做错误处理
- 抓取到数据后调用OnResponse,做刚抓到数据时的处理工作
- 然后分析抓取到的数据会根据页面上的dom节点触发OnHTML回调进行数据分析
- 数据分析完毕后会调用 OnScraped函数进行每次抓取后的收尾工作
4. 辅助接口
colly也提供了部分辅助接口,协助完成数据抓取分析流程, 以下列举一部分主要的支持。
- queue 用于存放等待抓取的链接
- proxy 用于代理发起抓取源
- thread 支持多携程并发处理
- filter 支持对特殊链接进行过滤
- depth 可以设置抓取深度控制抓取
5. 实例
更多可以参考源码链接中的例子
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信5264 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
1. 概述
gocolly是用go实现的网络爬虫框架gocolly快速优雅,在单核上每秒可以发起1K以上请求;以回调函数的形式提供了一组接口,可以实现任意类型的爬虫;依赖goquery库可以像jquery一样选择web元素。
gocolly的官方网站是http://go-colly.org/,提供了详细的文档和示例代码。
2. 安装配置
安装
go get -u github.com/gocolly/colly/...
引入包
import "github.com/gocolly/colly"
3. 流程说明
3.1. 使用流程
使用流程主要是说明使用colly抓取数据前的准备工作
- 初始化Collector对象, Collector对象是colly的全局句柄
- 设置全局设置,全局设置主要是设置colly 句柄的代理设置等
- 注册抓取回调函数, 主要是用于在抓取数据后在数据处理的各个流程提取数据以及出发其他操作
- 设置辅助工具,如抓取链接的存放队列,数据清洗队列等
- 注册抓取链接
- 启动程序开始抓取
3.2 抓取流程
每次抓取数据流程中的各个节点都会尝试触发用户注册的抓取回调函数,以完成提取数据等需求, 抓取流程如下。
- 根据链接每次准备抓取数据前调用 注册的 OnRequest做每次抓取前的预处理工作
- 当抓取数据失败时会调用OnError做错误处理
- 抓取到数据后调用OnResponse,做刚抓到数据时的处理工作
- 然后分析抓取到的数据会根据页面上的dom节点触发OnHTML回调进行数据分析
- 数据分析完毕后会调用 OnScraped函数进行每次抓取后的收尾工作
4. 辅助接口
colly也提供了部分辅助接口,协助完成数据抓取分析流程, 以下列举一部分主要的支持。
- queue 用于存放等待抓取的链接
- proxy 用于代理发起抓取源
- thread 支持多携程并发处理
- filter 支持对特殊链接进行过滤
- depth 可以设置抓取深度控制抓取
5. 实例
更多可以参考源码链接中的例子