今年开始学习GO,所以GO中是否有适合数据分析的包我也不太清楚。但是爬虫的工具是有一些的。
我最近在用GO裸写爬虫。具体的思路也是参考着scrapy框架。涉及enginer、downloader、parser、itemLoader这些,有时间还可以把scrapy中间件思想也加进来。可以利用go的天然支持高并发把parser和downloader封装到一个worker中,加入scheduler来实现并发控制。这个就不展开了。
GO裸写爬虫可以结合GO的http 和 goquery两个库来做。http可理解为python的requests,goquery可以理解为python的beautifulsoup,即它们分别可用于获取和解析网页。
goquery的语法类似jquery,可以便捷的操作dom,github地址如下:PuerkitoBio/goquerygithub.com
package main
import (
"fmt"
"github.com/PuerkitoBio/goquery"
"net/http"
)
func main() {
resp, err := http.Get("https://zhuanlan.zhihu.com/p/58911474")
if err != nil {
panic(err)
}
defer func() {
_ = resp.Body.Close()
}()
s, err := goquery.NewDocumentFromReader(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(s.Find("h1.Post-Title").First().Text())
}
很简单吧!
了解一下,GO也提供了一些爬虫框架,我使用GO的时间不长,我也没有用过,简单列举一些,如下:gocrawlPuerkitoBio/gocrawlgithub.compholcushenrylee2cn/pholcusgithub.comcollyhttps://github.com/gocolly/collygithub.com
等等。
有时间可以都研究一下。
补充:
几个月过去了,GO的学习也大有成果,最近发现GO也有一些数据分析包。补充下回答,有时间可以具体研究下。
与python中两个最著名的两个包:pandas和numpy,Go中对应的分别是gota和gonum,github的地址如下:https://github.com/go-gota/gotagithub.comgonum/gonumgithub.com
但是,它们的活跃度感觉都不是很高,看样子还不是很流行。而且gota的更新也不是很频繁,pandas功能那么强大,其中的很多功能gota肯定还没有实现,但却不怎么更新了,痛心。
如果以后发现其他更加优秀的数据分析包,再来补充。
补充:
最近,写了一篇较为系统的介绍 net/http 实现 HTTP 请求的文章,先来看看目录,如下:
这篇文章写的这么好,竟然没人赞同,我表示很奇怪啊。文章地址:波罗学:GO爬虫必备之HTTP请求QuickStartzhuanlan.zhihu.com
欢迎关注我的专栏,Golang 之旅,见证我的 Golang 学习历程。