Go言語のgofeedを使ってRSSをパースする

f:id:yoshitaku_jp:20190527152510p:plain

目次

きっかけ

Write-Blog-Every-Weekのメンバーのブログ情報をとってくるときに、GAS上でRSSをパースしていました。しかし、今後複数人でメンテナンスをする可能性ができたため、GAS上から移動させることとなりました。JS繋がりでnode.jsへ移行することも考えましたが自分の中でnode.jsへの理解が追いつかず、せっかくなので新しい言語のGo言語へ移行することにしました。

gofeedを使う

タイトルにもある通りgofeedを使いました。「go feed」で調べたときに、広そうな検索ワードであったにもかかわらず上位に出てきたためです。

github.com

環境

go version go1.12.5 darwin/amd64

インストール

go get github.com/mmcdole/gofeed

ソース

今回のソースコードは、自分のはてなブログに対して実行しています。様々なURLに変更して試してみてください。

package main

import (
    "fmt"

    "github.com/mmcdole/gofeed"
)

func main() {

    url := "https://yoshitaku-jp.hatenablog.com/rss"

    fp := gofeed.NewParser()
    feed, _ := fp.ParseURL(url)

    items := feed.Items

    for _,item := range items{
        fmt.Println(item.Title)
        fmt.Println(item.Link)
    }    
}

出力結果

Wrappalyzerを使ってサイトで使われている技術を見てみよう
https://yoshitaku-jp.hatenablog.com/entry/2019/05/19/070000
基本は大切 / Vue.js チュートリアルのToDoリスト作成から学んだこと
https://yoshitaku-jp.hatenablog.com/entry/2019/05/06/190000
前向きになろう / 理論と事例でわかる自己肯定感を読んだ
https://yoshitaku-jp.hatenablog.com/entry/2019/05/05/233000
わかりやすい説明を / 技術をつたえるテクニック ~分かりやすい書き方・話し方~ を読んだ
(中略)

まとめ

RSSを取得してパースする処理が簡単にかけました。GASでは自分でパースしていたので全員分のブログ情報を取得できていませんでしたが、ライブラリを使ったことにより無事全員のブログを表示することができました。非常に嬉しいです。

write-blog-every-week.netlify.com

おしまい