AdSense

網頁

2023/1/20

Golang 網頁爬蟲範例

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"意思為找到網頁中h1class="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/")
}

github



測試

執行印出以下。


菜鳥工程師 肉豬


沒有留言:

AdSense