Lan's note

高速HUGOブログで脱WordPress!静的ブログでもココまでできるを実証中!

2019-07-20

Go言語[Golang]サイトマップからURL(loc)を取得するコード

goqueryパッケージのインストール

$ go get github.com/PuerkitoBio/goquery

サイトマップのURL(loc)を配列に格納する

package main

import (
	"fmt"
	"github.com/PuerkitoBio/goquery"
)

func main() {
	url := "https://lancers.work/sitemap.xml"
	doc, err := goquery.NewDocument(url)
	if err != nil {
		panic(err)
	}

	var link = []string{}
	doc.Find("loc").Each(func(_ int, s *goquery.Selection) {
		link = append(link, s.Text())
	})

	fmt.Println(link)
}

実行結果

[https://lancers.work/tags/vmware/ https://lancers.work/vmware-esxi65-realtek-nic/ ・・・ https://lancers.work/pref-city-form-jquery-json/ https://lancers.work/hexo-nodejs-blog/]

解説

  • サイトマップファイルをスクレイピングするためgoqueryパッケージを使用
  • locの取得
  • locは複数あることが多いためEach文で回しながらsで受け取り、sのText()(URL)を取得しています。
  • 取得したURLはappendで配列に追加していきます。

応用

以下の過去記事と組み合わせると、ランダムにブログ記事のURLを取得して定期的にツイートすることができます。