1. 程式人生 > 其它 >c++text怎麼用_用 Go 做爬蟲的話,有哪些庫可以選擇?

c++text怎麼用_用 Go 做爬蟲的話,有哪些庫可以選擇?

技術標籤:c++text怎麼用

關注公眾號 “轉角遇到GitHub” ,每天推薦給你優秀開源專案

說起爬蟲,很多人可能想到 Python,其實 Go 目前在這方面表現也還可以。今天看看 Go 比較有名的爬蟲相關庫有哪些?

GoQuery

說起 Go 爬蟲相關庫,最早、最知名的應該是 goquery,這是模仿 jquery 的,所以使用過 jquery 的,用 goquery 會特別親切,功能也很強大。

專案地址:https://github.com/PuerkitoBio/goquery,Star 數 9.4k+。

例子:

packagemain

import(
"fmt"
"log"
"net/http"

"github.com/PuerkitoBio/goquery"
)

funcExampleScrape(){
//RequesttheHTMLpage.
res,err:=http.Get("http://metalsucks.net")
iferr!=nil{
log.Fatal(err)
}
deferres.Body.Close()
ifres.StatusCode!=200{
log.Fatalf("statuscodeerror:%d%s",res.StatusCode,res.Status)
}

//LoadtheHTMLdocument
doc,err:=goquery.NewDocumentFromReader(res.Body)
iferr!=nil{
log.Fatal(err)
}

//Findthereviewitems
doc.Find(".sidebar-reviewsarticle.content-block").Each(func(iint,s*goquery.Selection){
//Foreachitemfound,getthebandandtitle
band:=s.Find("a").Text()
title:=s.Find("i").Text()
fmt.Printf("Review%d:%s-%s\n",i,band,title)
})
}

funcmain(){
ExampleScrape()
}

colly

相對來說 goquery API 有些低階,而 colly 這個庫是一個真正的爬蟲框架。這是一個用於 Golang 的優雅的 Scraper 和 Crawler 框架。

專案地址:https://github.com/gocolly/colly,Star 數:12.3k+。

它還有一個專門的網站:https://go-colly.org。

funcmain(){
c:=colly.NewCollector()

//Findandvisitalllinks
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/")
}

注意,colly 是基於 goquery 的。

soup

Go 中的網頁抓取工具,類似於 Python 的 BeautifulSoup。該庫很短小,核心程式碼才 500 多行,對爬蟲實現感興趣的可以研究下它的原始碼。

專案地址:https://github.com/anaskhan96/soup,Star 數:1.4k+。

示例:

packagemain

import(
"fmt"
"github.com/anaskhan96/soup"
"os"
)

funcmain(){
resp,err:=soup.Get("https://xkcd.com")
iferr!=nil{
os.Exit(1)
}
doc:=soup.HTMLParse(resp)
links:=doc.Find("div","id","comicLinks").FindAll("a")
for_,link:=rangelinks{
fmt.Println(link.Text(),"|Link:",link.Attrs()["href"])
}
}

Pholcus

這是國人寫的,分散式高併發爬蟲軟體。這是一個完整的專案,而不是一個庫。它支援單機、服務端、客戶端三種執行模式,擁有 Web、GUI、命令列三種操作介面;規則簡單靈活、批量任務併發、輸出方式豐富(mysql/mongodb/kafka/csv/excel等);另外它還支援橫縱向兩種抓取模式,支援模擬登入和任務暫停、取消等一系列高階功能。

專案地址:https://github.com/henrylee2cn/pholcus,Star 數 6.6k+。

小結

以上有各自的優劣,如果你有需求,可以根據需要選擇一個適合你的。你還知道哪些?歡迎留言

文末「閱讀原文」可直達專案首頁。

今天的專案大家覺得怎麼樣嗎?如果你喜歡,請在文章底部留言、點贊或關注轉發,你的支援就是我持續更新的最大動力!

推薦閱讀

  • 繪製圖表不是前端的專利,服務端語言也可以


轉角遇到GitHub - 送給愛開源的你

3e7317a2f7d8d07b29495fc153e3df76.png

Git ·GitHub · GitLab · Gitee