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 - 送給愛開源的你
Git ·GitHub · GitLab · Gitee