用 Go 做爬虫的话,有哪些库可以选择?

admin 2025-02-24 76人围观 ,发现32个评论

大家好,我是欧盆索思(opensource),每天为你带来优秀的开源项目!

说起爬虫,很多人可能想到Python,其实Go目前在这方面表现也还可以。今天看看Go比较有名的爬虫相关库有哪些?

GoQuery

说起Go爬虫相关库,最早、最知名的应该是goquery,这是模仿jquery的,所以使用过jquery的,用goquery会特别亲切,功能也很强大。

项目地址:,Star数9.4k+。

例子:

packagemainimport("fmt""log""net/http""/PuerkitoBio/goquery")funcExampleScrape(){//,err:=("")iferr!=nil{(err)}()!=200{("statuscodeerror:%d%s",,)}//LoadtheHTMLdocumentdoc,err:=()iferr!=nil{(err)}//(".").Each(func(iint,s*){//Foreachitemfound,getthebandandtitleband:=("a").Text()title:=("i").Text()("Review%d:%s-%s\n",i,band,title)})}funcmain(){ExampleScrape()}
colly

相对来说goqueryAPI有些低级,而colly这个库是一个真正的爬虫框架。这是一个用于Golang的优雅的Scraper和Crawler框架。

项目地址:,Star数:12.3k+。

它还有一个专门的网站:。

funcmain(){c:=()//("a[href]",func(e*){(("href"))})(func(r*){("Visiting",)})("")}

注意,colly是基于goquery的。

soup

Go中的网页抓取工具,类似于Python的BeautifulSoup。该库很短小,核心代码才500多行,对爬虫实现感兴趣的可以研究下它的源码。

项目地址:,Star数:1.4k+。

示例:

packagemainimport("fmt""/anaskhan96/soup""os")funcmain(){resp,err:=("")iferr!=nil{(1)}doc:=(resp)links:=("div","id","comicLinks").FindAll("a")for_,link:=rangelinks{((),"|Link:",()["href"])}}
packagemainimport("fmt""/anaskhan96/soup""os")funcmain(){resp,err:=("")iferr!=nil{(1)}doc:=(resp)links:=("div","id","comicLinks").FindAll("a")for_,link:=rangelinks{((),"|Link:",()["href"])}}
Pholcus

这是国人写的,分布式高并发爬虫软件。这是一个完整的项目,而不是一个库。它支持单机、服务端、客户端三种运行模式,拥有Web、GUI、命令行三种操作界面;规则简单灵活、批量任务并发、输出方式丰富(mysql/mongodb/kafka/csv/excel等);另外它还支持横纵向两种抓取模式,支持模拟登录和任务暂停、取消等一系列高级功能。

项目地址:,Star数6.6k+。

小结

以上有各自的优劣,如果你有需求,可以根据需要选择一个适合你的。

猜你喜欢
    不容错过