ココログのアクセス解析ログのダウンロードお助けアプリ作ってみた。
公式の方でアナウンスがありましたが、12月3日から新しいアクセス解析が導入されるということですが、注意したいのは
現在のアクセス解析のデータは新アクセス解析には引き継がれません。
ということで、ダウンロード期間中の2013年11月18日~2014年2月28日の間に現在のアクセス解析のログをダウンロードしておかないと見れなくなってしまう訳です。
ログはエクセルファイルで「アクセス推移」、「ページ別アクセス数」、「リンク元ページ」、「検索サイト」、「検索ワード」、「検索フレーズ」の各ページがあって詳しく充実してるのでダウンロードおすすめです。私の場合、これで2009年から現在までのログが一分くらいでダウンロード出来ました。眺めるみると、ブログ初めたばかりの時はアクセス数10を切っていた日がザラ。二桁が当たり前になるまでに3ヶ月。アクセス数平均100を超えるまで一年以上。
だたし、ひと月ごとのダウンロードになるので、長くブログをやっているとなかなか全部ダウンロードするのが大変です。
そこで、Pythonでちょっとしたスクリプトを書いて見ました。また、調子に乗ってPythonがインストールされてなくとも使えるようにグラフィカルインターフェイス版を実行ファイルとしてパッケージ化してみました。
ココログアクセス解析自動ダウンロードスクリプトの使い方。
Pythonの2.7で書いています。Python2.7をインストールする必要があります。
レジストリを汚したくない人はPortable Pythonという手もあります。ただし、NumPy, SciPy, Matplotlib, PyWin32, Django, PIL, wxPython, PyQt, PyGameなどがついてくるのでダウンロードサイズが大きめなので、普通に公式のPython 2.7.6 Windows Installerを公式サイトからダウンロードするのがおすすめです。
Pythonのインストールが終わったら、下のスクリプトをテキストエディターにはっつけるか、上のリンクからダウンロードして、最後の方のtextとurlの変数をココログの管理者ページのアクセス解析のページ(http://app.f.cocolog-nifty.com/t/app/control/stats)をリロードしてからソースコードを見て、変更します。リロードは最新のセッション情報をスクリプトに渡してやるために重要です。
アクセス解析のページにいって、「ブログ/マイフォトを選択」のところで自分のブログを選んでから、ページを右クリックして、ウェブページのソースコードを表示します。
ソースの174行目にtdダグで囲まれた沢山のselectダグのある行があると思います。これがtextに渡す文字列になるので、一行全部コピペしてください。この情報からダウンロードする年・月の情報を抜き取っています。次に、urlにはソースの156行目にあるlocation.hrefのダブルクォーテーションで囲まれた内容をコピペしてください。
最後にダウンロード先のフォルダをdestinatioin変数に指定します。フォルダが存在しないとエラーになりますので、先にフォルダを制作してください。この時、スラッシュの数に気をつけてください。例えば、C:\Users\hennohito\Dropbox\access_logというフォルダに保存する場合 destinatioin=r'C:\Users\hennohito\Dropbox\access_log'としてrをクォートの前に付けるか、destinatioin='C:\\Users\\hennohito\\Dropbox\\access_log'としてスラッシュを2つ書いてください。
完成した内容をdl.pyとして保存します。実行するには色々なやり方がありますが、簡単なのはC:\Python27からpython.exeというファイルを見つけます。このファイルにさっき保存したdl.pyをドラッグしてやれば実行出来ます。
バージョンアップのお知らせ。いくつかのファイルがうまく開けないエラーがありました。解決策として、サーバーに負荷かけないように、10秒のウェイトを入れておきました。それから、範囲でも指定したり、エラーになった月だけ手作業で指定するオプションもつけました。ifやelifのあとの数字を0から1にするとオプションのオン・オフができます。0でオフ、0位外はオンです。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# dl.py
#
# Copyright 2013 <http://hennohito.cocolog-nifty.com/>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.
#
#
import multiprocessing, os, Queue, time, urllib2 # standard library
def DL(YearMonth, url, destinatioin):
fp = os.path.join(destinatioin, YearMonth+'.xls')
f = urllib2.urlopen(url + YearMonth)
with open(fp, 'wb') as xls:
xls.write(f.read())
class Worker(multiprocessing.Process):
''' http://jeetworks.org/node/81
modified from the 2nd example in the comments '''
def __init__(self, work_queue, url, destinatioin):
# base class initialization
multiprocessing.Process.__init__(self)
# job management stuff
self.work_queue = work_queue
self.kill_received = False
self.url = url
self.destinatioin = destinatioin
def run(self):
while not self.kill_received:
# get a task
try:
n_job, YearMonth = self.work_queue.get_nowait()
except Queue.Empty:
break
# the actual processing
print("Starting " + str(n_job+1) + " ... " + YearMonth)
DL(YearMonth, self.url, self.destinatioin)
time.sleep(10)
if __name__ == '__main__':
work_queue = multiprocessing.Queue()
if 1:
# 年月指定オプション1 ソースから全部抜き取る
# ソースの174行目 http://app.f.cocolog-nifty.com/t/app/control/stats
text = '<td><select name="dl_ym" id="dl_ym"><option value="201310">2013年10月</option><option value="201309">2013年09月</option><option value="201308">2013年08月</option><option value="201307">2013年07月</option><option value="201306">2013年06月</option><option value="201305">2013年05月</option><option value="201304">2013年04月</option><option value="201303">2013年03月</option><option value="201302">2013年02月</option><option value="201301">2013年01月</option><option value="201212">2012年12月</option><option value="201211">2012年11月</option><option value="201210">2012年10月</option><option value="201209">2012年09月</option><option value="201208">2012年08月</option><option value="201207">2012年07月</option><option value="201206">2012年06月</option><option value="201205">2012年05月</option><option value="201204">2012年04月</option><option value="201203">2012年03月</option><option value="201202">2012年02月</option><option value="201201">2012年01月</option><option value="201112">2011年12月</option><option value="201111">2011年11月</option><option value="201110">2011年10月</option><option value="201109">2011年09月</option><option value="201108">2011年08月</option><option value="201107">2011年07月</option><option value="201106">2011年06月</option><option value="201105">2011年05月</option><option value="201104">2011年04月</option><option value="201103">2011年03月</option><option value="201102">2011年02月</option><option value="201101">2011年01月</option><option value="201012">2010年12月</option><option value="201011">2010年11月</option><option value="201010">2010年10月</option><option value="201009">2010年09月</option><option value="201008">2010年08月</option><option value="201007">2010年07月</option><option value="201006">2010年06月</option><option value="201005">2010年05月</option><option value="201004">2010年04月</option><option value="201003">2010年03月</option><option value="201002">2010年02月</option><option value="201001">2010年01月</option><option value="200912">2009年12月</option><option value="200911">2009年11月</option><option value="200910">2009年10月</option><option value="200909">2009年09月</option><option value="200908">2009年08月</option><option value="200907">2009年07月</option><option value="200906">2009年06月</option><option value="200905">2009年05月</option><option value="200904">2009年04月</option><option value="200903">2009年03月</option><option value="200902">2009年02月</option></select></td>'
YearMonths = [_[2:8] for _ in text.split('value')[1:]]
elif 0: # 年月指定オプション2 ほしい範囲で指定
StartYM, EndYM = '200902', '200904'
StartY, EndY = int(StartYM[:4]), int(EndYM[:4])
StartM, EndM = int(StartYM[4:]), int(EndYM[4:])
YearMonths = []
for Y in (range(EndY-StartY+1)):
if Y == 0:
_StartM = StartM
else:
_StartM = 1
if Y == EndY-StartY:
_EndM = EndM+1
else:
_EndM = 12+1
for M in range(_StartM, _EndM):
print "%d%02d" % (StartY + Y, M)
YearMonths.append( "%d%02d" % (StartY+Y, M) )
elif 0: # 年月指定オプション3 エラーになったのものだけ手作業で。
YearMonths = ['200903', '200905' ]
for n, YearMonth in enumerate(YearMonths):
work_queue.put( (n, YearMonth) )
print "Total %d jobs found" % (n+1)
# ソースの156行目 http://app.f.cocolog-nifty.com/t/app/control/stats
url = "http://ax24.a.cocolog-nifty.com/bin/dl?ud=xxxxx.cocolog-nifty.com&bid=bxxxxxxxx&sk=xxxxxxxxxxxxxxxxxxxxxxxx&ym="
destinatioin = r"C:\access_log" # 存在するフォルダのみ指定可能。
for _ in range(multiprocessing.cpu_count()):
worker = Worker(work_queue, url, destinatioin)
worker.start()
ココログアクセス解析自動ダウンロードアプリの使い方。
ファイルサイズが5.9MBで1MB以上あるので、ココログにはアップできませんでした。そこでhotfile.comというサービスにアップしたので、次のリンクからダウンロードしてください。zipなので適当に解凍して、出てきたexeファイルを実行してください。
ココログアクセス解析自動ダウンロードアプリのダウンロードリンク
簡単に書きますので、わからない場合上に書いたスクリプトの使い方を見てもらえば、解決すると思います。
最初のパラメータはブログのURLです。赤枠のところを自分のブログのものにしてください。次に、アクセス解析ページで「ブログ/マイフォトを選択」で自分のブログを選んでからウェブサイトのソースページをみて、156行目にあるbidとskというパラメータを見つけてください。これが2つめ3つめの値になります。
あとは初めの月と終わりの月を例に習って入力し、[ダウンロード先フォルダ選択]ボタンからダウンロード先を選びます。で、[ダウンロード開始]ボタンでダウンロードが始まります。
GUI版のソースコードも参考までにおいておきます。
« DreamPie 1.2.1でカーソルが出ない。タブが真っ白。解決。 | トップページ | スタイリッシュで高機能になったTiddlyWiki5の使い方。 »
「パソコン・インターネット」カテゴリの記事
- Linuxのデスクトップ環境にログインした時にxmodmapコマンド実行(2023.12.30)
- youtube-dlでrumbleをダウンロード(2023.12.06)
- Pop!_OSのアプデがfcitxを繰り返し葬る件(2023.05.22)
- vue.jsで遊んでみる(2023.01.02)
- 『将棋神やねうら王』のオープンソース版MyShogiをLinux Mint 19.1でビルドしてみた件(2019.03.24)
「日記・コラム・つぶやき」カテゴリの記事
- だらだら日記だ(2023.11.26)
- Letter from home、September15thなどなどのピアノアレンジが素晴らしい件(2018.08.03)
- 2日半のfasting(断食)で劇的おなら予防。(2017.12.18)
「Python」カテゴリの記事
- Noteの記事をPythonでバックアップしといた。(2021.05.05)
- JupyterLabでも好きな外部エディターを使いたい!(2018.05.02)
- ローカルエリア内のJupyterLabサーバーにLAN経由で接続する。(2018.05.02)
- Juliaやってみよう。五日目。Pythonと速度比較。(2017.08.01)
- Juliaやってみよう。四日目。@timeでプロファイリング(2017.07.16)
「ココログ」カテゴリの記事
- Feedlyで自分のブログの登録人数を調べる(2016.05.30)
- Pythonでココログのサイトマップから全文配信のRSS1.0を作ってみた。(2014.09.07)
- ココログフリーの記事の下にZenbackつけてみた。(2013.12.08)
- ココログのアクセス解析ログのダウンロードお助けアプリ作ってみた。(2013.11.26)
- ココログでpygmentsを使ってコードのハイライト(2013.01.31)
トラックバック
この記事へのトラックバック一覧です: ココログのアクセス解析ログのダウンロードお助けアプリ作ってみた。:
» ココログの旧アクセスログのダウンロードを効率的に済ます。 [なおさん亭::別館]
ココログの旧アクセスログのダウンロード期限が2月末に迫った、という話を書きました。ブログ運営期間が長くて、ブログの種類もいくつかあるので、月別にダウンロードしていては時間がいくらあっても足りないよ、ということで見つけたのがこのページ。 ココログのアクセス解析ログのダウンロードお助けアプリ作ってみた。: YATTSUKE BLOG 奇特な方が、旧アクセスログを一括でダウンロードできるツールを作ってくれました。今回、これを使わせていただき、どかんと全部ダウンロードしてしまおうというわけです。... [続きを読む]
« DreamPie 1.2.1でカーソルが出ない。タブが真っ白。解決。 | トップページ | スタイリッシュで高機能になったTiddlyWiki5の使い方。 »
コメント