ハイロブログの投稿状況を取得してみた

今月のブログのネタは何にしようか。

そう思ったとき、社内チャットで「ブログ未更新」の通知がされたのを思い出した。

たくさんブログを書いている人、逆に書いていない人を洗い出してみようと、
ブログ投稿状況を取得するプログラムを書いてみた。

処理

URL叩いて、スクレイピングして、表示するだけの単純なプログラム。

  1. 1. Membersページ(https://hirocks.jp/members/)から各メンバーの名前と個別ページのURLを取得する。
  2. 2. 個別ページの一覧から記事の日付を取得する。
  3. 3. 月毎に記事数をカウントし表示する。

結果

さて、これが実行した結果だ。細かいルールは置いといて

『結果』だけだ!! コンソールには『結果』だけが残る!!

2020年11月17日現在

Name                    2019-12 2020-01 2020-02 2020-03 2020-04 2020-05 2020-06 2020-07 2020-08 2020-09 2020-10 2020-11
川村希一                2       2       1       2       1       1       1       1       1       1       1       1
イケダリュウイチ        0       1       0       2       1       0       2       0       1       1       1       0
ロング                  1       0       2       1       1       1       1       1       1       1       1       0
まっきー                0       1       1       1       1       1       0       0       3       1       1       0
ミヤタ                  0       1       1       1       1       1       1       1       1       1       1       0
Briar Rose              0       0       2       0       2       1       3       3       2       2       2       2
アダッチ                1       0       2       1       1       1       1       1       1       1       1       0
ゴリヤマ                0       1       0       2       1       1       1       0       0       1       2       1
Kaji                    0       1       1       1       1       1       1       1       1       1       1       1
ヘビ子                  0       1       1       1       1       1       1       1       1       1       1       0
かねむら                0       1       1       1       0       2       1       1       1       1       1       0
イケミヤギハルキ        0       0       0       2       0       0       1       0       0       0       0       2
トヨ                    1       2       1       1       1       1       0       1       1       2       1       0
おはま                  0       1       2       1       0       1       0       0       0       0       1       0
しょう                  0       1       1       1       1       1       1       1       1       1       1       0
97                    0       1       1       1       1       1       1       1       1       1       1       0
mit                     0       1       2       1       1       1       1       1       1       1       1       0
チャン・ドラゴン        0       0       2       1       0       0       0       0       0       0       0       0
さっさ                  0       0       2       1       1       1       1       1       1       1       1       0
ルナさん                0       1       1       1       1       1       1       1       1       1       1       0
Phantom うえだ          1       1       2       1       1       1       0       0       0       1       2       0
TATSUYA                 2       5       1       2       1       0       1       0       0       3       1       0
ショート                0       1       1       1       1       1       1       1       1       1       1       0
ひだりした              1       1       1       1       1       1       1       1       1       0       1       1
たまひで                0       1       2       1       1       1       1       0       0       0       3       0
しっきー                0       1       1       1       1       1       1       1       0       1       1       0
ななみ                  0       0       2       1       1       1       1       1       1       1       1       0
はなたれ                0       1       1       1       0       1       0       1       0       0       0       0
きたろう                0       1       1       1       1       1       1       1       1       1       1       0
マン                    0       1       1       1       2       1       1       1       1       1       1       0
たかはし                0       0       0       0       0       1       1       1       1       1       1       0
トリ                    0       0       0       0       0       1       1       1       0       1       1       0
TK                      0       0       0       0       0       0       0       0       1       1       1       0
Ryo-LAND                0       0       0       0       0       0       0       0       0       1       1       0

まとめ

使用言語はGo言語。
今回はCUIでサクっと表示させるために空白、TABで位置調整している。

34名分のスクレイピングに逐次処理だと約10.8秒かかっていたが、
シンプルにgoroutineとWaitGroupだけ使った並行処理で約1.9秒まで短縮。

BenchmarkSequential-4              1        10796687800 ns/op       20820760 B/op     312828 allocs/op
BenchmarkConcurrency-4             1        1887982900 ns/op        14056376 B/op     148151 allocs/op

ネタが無い人はたくさん書いてる人にアドバイスもらったり、ネタが無いことをネタにブログ書いてみてもいいんじゃないでしょうか。