之前写爬虫用的是 python + scrapy,现在来感受一下使用 Go 写爬虫,本文将介绍一下 Go 的爬虫框架 Colly。
框架介绍
Colly 是 Gopher 们的非常快速且优雅的爬虫框架,提供了一个干净的界面来编写任何种类的爬虫。可以轻松地从网站中提取结构化数据,这些数据可用于各种应用程序,例如数据挖掘,数据处理或归档。
框架特点
我们来看下这个框架的一些优点:
- 简洁的 API
- 快速(单核可以达到每秒 1k 个请求)
- 管理请求延迟和每个域名的最大并发
- 自动 cookie 和会话处理
- 同步/异步/并行 抓取
- 缓存
- 自动编码非 unicode 的响应
- Robots.txt 支持
- 分布式爬虫
- 通过环境变量进行配置
- 可扩展
安装
这里有两种方式可以安装 Colly。
方式一
在 go.mod 添加 github.com/gocolly/colly/v2 latest
module github.com/k8scat/spider
go 1.14
require (
github.com/gocolly/colly/v2 latest
)
方式二
Go 模块安装的一般方式:
go get -u github.com/gocolly/colly/v2
简单案例
现在让我们试一试这个框架吧:
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/")
}
总结
Go 写爬虫的整体感受还是很好的,值得一试!