(O+P)ut

習うより慣れろ、Practice makes perfect。この言葉をモットーに、Slerで働く若手インフラエンジニアが、学んだ知識を【 (O+P)ut = OutPut 】していく場です。

その日、「最も」話題となったキーワードを調べてみる

Twitterからの情報を取得しながら何かをしようとすると、Twitterと連携するためのOAuth認証を行わなければなりません。
Twitter4J - A Java library for the Twitter APIなどを使えば、もちろん認証周りをスムーズにはしてくれるのですが、やはり認証用アカウントの取得は必須です。

一方で、このようなアカウントが不要でTwitterの情報が使用できるサービスに
Yahoo!検索があり、ここでは最新の話題ワードTop20が表示されています。*1

ここのhtmlを取得すれば簡単に世間の関心等をフォローすることができますので、紹介ついでに少し解析して遊んでみたいと思います。

過去の記事同様 【Linux】wgetで桂離宮の参観可能日を取得する - (O+P)ut
wgetで取得してもいいのですが、今回は jsoup( Java で HTML の解析・編集を行うためのライブラリ)を使ってhtmlを取得しました。

ライブラリを取得し、org.jsoup...をインポートさえ行えば

String url = "https://search.yahoo.co.jp/realtime"
Document document = Jsoup.connect(url).get();
String str = document.html();

たったこれだけの記述でstrにhtmlが入っています。

あとは、htmlの構造を見ながら必要な箇所のみを出力して以下のようにTop20のキーワードを吐くようにしました。*2

java -jar getHotTag.jar 
パラド,グラファイト,ジュリオ,17号,永夢,エグゼイド,飛彩,マーダッコ,リオ,パラドクス,リプログラミング,アンラッキー,界王様,いちか,スティンガー,サンデーモーニング,プリキュア,ポッピーピポパポ,キュウレンジャー,リュウテイオー

これを10分毎に起動して`date +%Y%m%d`.csvファイルに出力し、「その日、最も話題となったキーワード」を調べてみます。
2017/4/23 0:00~24:00 での計144回の検索結果を以下のワンライナーでソートしました。

cat 20170423.csv | awk 'BEGIN{RS=",";ORS="\n"}{print $0}' | awk '{count[$0]++}END{for(i in count)print i","count[i]}' > result.txt

RS=",";ORS="\n"によってカンマ区切りを全て改行にし、count[$0]とすることで連想配列としてカウントしています。

ちなみに、上の出力結果を wc で確認すると

$ wc result.txt 
     265     305    4577 result.txt

つまり、4/23 に「最新の話題ワードTop20」に出てきたワードは265種類だということになります。

この265種類のワードをcountの値でソートして出力した結果はこちらです。

f:id:mtiit:20170423235920p:plain

ぶっちぎりの一位が確認できます。
さて、上位3位はこのようになっています。

1. ナオトインティライミ (count:93)
2. エキシビション (count:43)
2. 不審物 (count:43)

一位に関しては、
f:id:mtiit:20170424000129p:plain
とのことでTwitter上で賑わっているようです(笑)

以上です。

*1:非公開に設定されていない日本語のツイートを主な対象として表示している模様

*2:2017/4/23/10:00あたり