(O+P)ut

ITエンジニアのアウトプット録



(O+P)ut

OutPut Log by SE

【Linux】wgetでYahoo! 話題のキーワードを取得する

Yahoo! 話題のキーワードを取得

前にjsoupというHTML解析ライブラリを使ってみた記事でも紹介したサービスを、今回はwgetコマンドでやってみます。WindowsでもCygwin等でも同様に動作します。

ちなみに、リアルタイム検索で話題のキーワードはビジネスユーズ向けのAPIとしても提供されているようです。


wgetで取得

アクセスするURLを指定してYahoo!が提供する注目のキーワードTop20を取得します。

まずは、以下をLinux環境でそのまま動かせばながながとhtmlが表示されます。

$  wget -O - 'https://search.yahoo.co.jp/realtime/search' 2> /dev/null | grep -A 1 注目のキーワード| tail -n 1

以下、コマンドの解説です。

wget -O -

標準出力に表示をします

2> /dev/null

[ <=> ] 84.05K 396KB/s in 0.2s といった不要なメッセージを表示させないようにします

grep -A 1

検索でヒットした行から下一行を追加で表示します

tail -n 1

検索してヒットした行の下一行だけを表示します

html構造を確認

以下が、話題のワードが格納されている箇所の構造です。

<tr>
<td><div><span>1</span><a href="URL">1位キーワード</a></div></td>
<td><div><span>11</span><a href="URL">11位キーワード</a></div></td>
</tr>
...
<tr>
<td><div><span>10</span><a href="URL">10位キーワード</a></div></td>
<td><div><span>20</span><a href="URL">20位キーワード</a></div></td>
</tr>

<>の区切りで値が格納されているのでawkで取得することにします。
まずは、1位~20位を取得するには以下のコマンドで取得可能です。

$ wget -O - 'https://search.yahoo.co.jp/realtime/search' 2> /dev/null | grep -A 1 注目のキーワード| tail -n 1 | awk  -F'[<>]' 'BEGIN{OFS=","}{print $13,$29,$49,$65,$85,$101,$121,$137,$157,$173,$193,$209,$229,$245,$265,$281,$301,$317,$337,$353}'

1位~10位でよければ間引きをして以下で表示できます。

$ wget -O - 'https://search.yahoo.co.jp/realtime/search' 2> /dev/null | grep -A 1 注目のキーワード| tail -n 1 | awk  -F'[<>]' 'BEGIN{OFS=","}{print $13,$49,$85,$121,$157,$193,$229,$265,$301,$337}'

結果

ブラウザで見た場合

f:id:mtiit:20181201132019p:plain

wgetした場合
wget -O - 'https://search.yahoo.co.jp/realtime/search' 2> /dev/null | grep -A 1 注目のキーワード| tail -n 1 | awk  -F'[<>]' 'BEGIN{OFS=","}{print $13,$49,$85,$121,$157,$193,$229,$265,$301,$337,$29,$65,$101,$137,$173,$209,$245,$281,$317,$353}'
中山恭子,ゼノブレイド,矢久保,愛知駅伝2018,ほんこん,中山恭子参院議員,片寄涼太,柳沢慎吾,ボニータ,ウィジョ,マウンテン,ポルノ超特急,京王線,ヨコハマ映画祭,リラックマ,上林,映画の日,夢生,謝罪ちゃん,岡崎体育

一位~20位の表示の場合、そのままだと1位、11位、2位・・といった順序になるので明示的に項目を入れ替えてやる必要があります。



以上です。