import re import urllib ## ココログのアクセス解析の「ページ別アクセス数」ページから合算を計算する Python スクリプト ## 該当ページをローカルに保存し ## ↓のような形で filenames に保存したファイル名を入れて同一フォルダに置き実行 filenames = '01.htm', '05.htm', '09.htm' limit = 30 # 何位まで表示するか r = re.compile( r'^(\d+)' + r'(.+?)' + r'.+(.+)' + r'(.+)' + r'' + '', re.M) d = {} for fn in filenames: f = open(fn, 'U') t = unicode(f.read(), 'utf') f.close() p = r.findall(t) for i in p: rank, url, title, access, callers = i rank = int(rank) url = urllib.unquote(url) t = title.split(': ', 1) if len(t) == 2: title = t[1] access= int(access.replace(',', '')) callers = int(callers.replace(',', '')) ## print rank, access, callers, title if url in d: d[url]['access'] += access d[url]['callers'] += callers else: d[url] = { 'title': title, 'access': access, 'callers': callers} print fn, len(p) L = [(v['callers'], v['access'], url, v['title']) for url, v in d.items()] L.sort() L.reverse() L = L[:limit] old_rank = old_access = 0 tr = [] for n, (callers, access, url, title) in enumerate(L): n if access == old_access: rank = old_rank else: old_access = access rank = old_rank = n + 1 a = url.split('/') if len(a) == 7: d = (u'%d%d%d%s (%s年%s月)' % (rank, access, callers, url, title, a[4], a[5])) else: d = (u'%d%d%d%s' % (rank, access, callers, url, title)) tr.append(d) f = open('rank.htm', 'w') f.write((u''' ココログのページ別アクセス総計 %s
順位訪問者アクセスページ
''' % '\n'.join(tr)).encode('utf')) f.close() # Public Domain. 好きに流用してください。