Linux環境でALISの人気記事ランキングを作成するための技術記事です。
現状ALISには検索機能もなければランキング機能もないみたいです。
トップページは人気記事と新着記事に分かれています。人気記事というのはどういうアルゴリズムで表示されているのかよく分からず、少なくとも単純ないいねランキングやトークン獲得ランキングでないことは確かです。
これは死ぬほどポジティブに言えば、いじり甲斐があると言えます。なければ作ってしまえばいいわけです。鳴かぬなら作ってしまえホトトギスロボットです。
ということでいいねとトークンの獲得数ランキングを作成していきます。
まずは対象とするページのURLが必要です。ぱっと見た感じALISのトップページはAJAXで表示されており、単純にアクセスしてURLを取得していくのはあまり得策でないように思えます。そもそも現状何件の記事があるのかもわかりません。あまり記事が多くなると厄介です。
そこで既にGoogleにキャッシュされている記事を対象にしていきます。Googleで検索すると現時点で745件の記事がキャッシュされています。Linuxのgooglerコマンドの結果をgrepに流し込むとなぜか799件が取得できました。これをファイルに保存しておきます。
次に各ページにアクセスし、スクレイピングを実行するプログラムを書きます。curlで各ページをバッファファイルに溜め込み、このバッファファイルに対して同じくgrepで欲しいデータを取得していきます。正規表現でタイトル、いいね獲得数、トークン獲得数を抽出するパターンを作成します。できました。わりと素直なHTMLなので簡単に取得できます。
あとは予め取得したURLに対してシェルスクリプトのwhile-do文で順番にスクレイピングを実行するように構成します。ALISサーバーに負荷を掛けすぎると警察のお世話になるリスクがあるので、1秒くらいのsleepを挟んでおきます。
完成しました。
ふとここであることが頭によぎります。サイトによっては利用規約があったりします。無駄に長くてほとんどの人が読まずに同意ボタンを押すアレです。
そこで第10条(禁止事項)の欄を確認すると…
しっかり禁止されていました。
ということでせっかく作ったスクリプトは無駄になってしまいました。やはりホトトギスは泣くまで待たなければならないようです。