ココログの旧アクセスログのダウンロード期限が2月末に迫った、という話を書きました。ブログ運営期間が長くて、ブログの種類もいくつかあるので、月別にダウンロードしていては時間がいくらあっても足りないよ、ということで見つけたのがこのページ。
ココログのアクセス解析ログのダウンロードお助けアプリ作ってみた。: YATTSUKE BLOG
奇特な方が、旧アクセスログを一括でダウンロードできるツールを作ってくれました。今回、これを使わせていただき、どかんと全部ダウンロードしてしまおうというわけです。
どかんといいながら、実際にはブログごと(しかもPC/携帯の種別ごと)に行う必要があり、それはそれで大変です。ですが、月別にドロップダウンを選択してボタンを押す操作に比べれば楽なものです。コンピュータを使っているメリットを享受しましょう。
手順は冒頭紹介のページに書いてあるので基本的なところは省略します。プログラミング言語PythonのスクリプトとWindowsのGUI版が用意されていたのですが、GUI版はアップ先のサイトHotfileが著作権侵害とかでサイト自体がクローズされており、使えません。ここは、プログラマらしくPythonスクリプトそのものを使わせていただくことにしました。
まず、Pythonをインストールする必要があります。素直に、公式サイトから落とすのがよいようです。Windows版をダウンロードし、インストールしました。インストール先はC:¥Python27(記事執筆時)です。この中にpython.exeというファイルがあり、これがPythonインタプリタです。
次に、この方が書いたDL.pyという旧アクセスログダウンロードのためのPythonスクリプトをダウンロードして適当な場所に置きます。このファイルを上記のpython.exeにドロップしてやれば、スクリプトが実行されて旧アクセスログがダウンロードできるのですが、何をどこに落とすかという指定をDL.pyに直接書いてやらなければなりません。
書き替えるポイントは3箇所です。まずダウンロード対象の月の指定。そしてダウンロード元のURL。最後はダウンロード先のフォルダです。このへん、どこから何を引っ張ってきてというのは上記のページに書いてありますので、そちらを参照してください。ただし、ココログアクセス解析ページのソースを表示させた際に、行番号が記事と異なっていますので、注意して下さい。
まず注意したいのは、セッションの有効期間です。ダウンロード元のURLにはセッションIDが埋め込まれており、その有効期間はかなり短いです。ですので、何ヶ月分も続けてダウンロードしていると、そのうちセッションの有効期間が切れて、ダウンロードに失敗します。その場合には、再びアクセス解析ページをリロードしセッションを更新してから、続きをダウンロードする必要があります。
このときに便利なのは、DL.py内で年月の範囲を指定するオプションを有効にするパターンです。私は、最初からこのオプションを有効にしてしまい、ドロップダウンリストから有効な年月リストを取得する方式は捨ててしまいました。これだと、ダウンロードに失敗した月からダウンロードするように書き替えるだけでよいので楽です。
以下の箇所(67行目)を「if 0」にしてしまい、
if 0:
# 年月指定オプション1 ソースから全部抜き取る
以下の箇所(72行目)を「elif 1」に変更します。
elif 1: # 年月指定オプション2 ほしい範囲で指定
StartYM, EndYM = ‘200704’, ‘201402’
次に注意したいのは、マルチコア環境ではダウンロードしたデータがなぜか壊れているケースがあるということです。コア数分の同時ダウンロードを行うのですが、なぜか同時にダウンロードされた月の間で片方だけデータが破損しているという状態になったので、コア数に関係なく常に1個だけダウンロードするように書き替えさせていただきました(99行目をコメントアウトして次に1回だけループするという意味のないfor文を挿入)。
# for _ in range(multiprocessing.cpu_count()):
for _ in range(1):
まとめると、こんな感じです。ちょっとわかりにくいかも知れません。
- ダウンロード先はいちいち書き替えるのは面倒なのでC:¥tempなどと決めてしまい、DL.pyを書き替えておく。もちろん、フォルダは作成しておく。
- 月範囲指定のダウンロードを行うようにDL.pyを書き替えておく。
- 旧アクセス解析ページを表示させる。
- ダウンロードしたいブログとPC/携帯の別をドロップダウンリストから選択する。
- 年月を指定するドロップダウンリストが出るので、開始年月、終了年月を調べてDL.pyに反映させる。
- ページのソースを表示させる。
- ダウンロード元URLをDL.pyにコピペする。
- DL.pyを保存してpython.exeにドロップ。ダウンロードが実行される。
- 保存されたExcelファイルのサイズが1KBになったらエラーなのでスクリプトの実行を中断する。
- エラーになった月からダウンロードするようにDL.pyを修正。
- ページをリロードし、手順6に戻る。
こう書くと大変そうですが、何百回もダウンロード操作を繰り返すよりは、はるかに楽です(私の場合)。これで何とか、2月末に間に合いました。スクリプト作者の白の変の人氏に感謝です。