
colly一款快速优雅的golang爬虫框架,简单易用,功能完备。
官网地址:http://go-colly.org/
github地址:github.com/gocolly/colly
到目前为止有16500个赞
特性
- 干净的API
 - 快速(单核>1k请求/秒)
 - 管理每个域的请求延迟和最大并发性
 - 自动cookie和会话处理
 - 同步/异步并行抓取
 - 分布式抓取
 - 缓存
 - 非unicode响应的自动编码
 - robots . txt的支持
 - 谷歌应用程序引擎支持
 
示例代码:
 
func main() {
	c := colly.NewCollector()
	// Find and visit all links
	c.OnHTML("a[href]", func(e *colly.HTMLElement) {
		e.Request.Visit(e.Attr("href"))
	})
	c.OnRequest(func(r *colly.Request) {
		fmt.Println("Visiting", r.URL)
	})
	c.Visit("http://go-colly.org/")
}
使用方式概括下来主要有三步:
- 创建一个采集器
 - 注册回调函数
 - 访问具体网站
 
创建采集器时可以指定一些配置参数,如useragent,爬取深度及日志等
colly.NewCollector(colly.UserAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"),
 colly.MaxDepth(1), 
colly.Debugger(&debug.LogDebugger{}))
回调函数共有7种
| 名称 | 说明 | 参数1 | 参数2 | 
|---|---|---|---|
| OnRequest | 请求前调用 | *colly.Request | |
| OnError | 请求发生错误时调用 | *colly.Response | error | 
| OnResponseHeaders | 收到响应头后调用 | colly.Response | |
| OnResponse | 收到响应后调用 | colly.Response | |
| OnHTML | 响应内容是HTML时调用 | xpath表达式 | func(e *colly.HTMLElement) | 
| OnXML | 响应内容是XML时调用 | xpath表达式 | func(e *colly.XMLElement) | 
| OnScraped | 在OnXML之后调用 | func(r *colly.Response) | 
colly,让我相信爬虫除了用python,我们用golang也是一个不错的选择。









