Go網頁爬蟲(web scraper)簡單範例。
Go可使用colly爬取網頁內容。
範例環境:
- Go 1.19
安裝
在Go專案根目錄以命令列執行go get github.com/gocolly/colly/v2
安裝colly。
~/../go-demo% go get github.com/gocolly/colly/v2
go: downloading github.com/gocolly/colly v1.2.0
go: downloading github.com/gocolly/colly/v2 v2.1.0
go: downloading github.com/PuerkitoBio/goquery v1.5.1
go: downloading github.com/antchfx/htmlquery v1.2.3
go: downloading github.com/gobwas/glob v0.2.3
...
範例
下面使用colly爬取https://matthung0807.blogspot.com的標題。
呼叫colly.NewCollector
取得colly.Collector
實例。
呼叫colly.Collector.OnHTML
取得網頁內容。
第一個參數為goquery selector,用法類似JQuery selector,"h1.title"
意思為找到網頁中h1
為class="title"
的元素;
第二個參數為HTMLCallback
函式,colly將回傳的網頁內容以goquery selector選擇後以colly.HTMLElement
傳入此函式,然後在函式中呼叫colly.HTMLElement.Text
取得選擇元素中的文字內容。
呼叫colly.Collector.Visit
訪問要爬取的網頁。
main.go
package main
import (
"fmt"
"github.com/gocolly/colly/v2"
)
func main() {
c := colly.NewCollector()
c.OnHTML("h1.title", func(e *colly.HTMLElement) {
s := e.Text // the text of <h1 class="title"/>
fmt.Println(s)
})
c.Visit("https://matthung0807.blogspot.com/")
}
測試
執行印出以下。
菜鳥工程師 肉豬
沒有留言:
張貼留言