どのページが閲覧されたかを知る(ページビュー)
ここでは、apache(アパッチ)のアクセスログからページビューを解析する方法を説明したいと思います。 ページビューは、ホームページがどれだけ閲覧されたかを示します。 サイト全体のページビューを解析することにより、どのページが人気があるか、どのコーナーが人気があるか、などがわかります。 それらの情報を元にホームページ製作を行うと、効率的にアクセスアップができるかも知れません。
ページビュー数を計算する
ページビューを取得するには、HTTPリクエストからURL部分を抜き出します。 (apacheのcombined logを前提にしています。必要に応じてサンプルを変えてください。) 具体的には、アクセスログ生データの各行の5番目のデータからURL部分を抜き出します。
抜き出したURL部分を単純に羅列しただけでは膨大な量のデータになってしまうので、ここでは、各URLの登場回数を数えてみたいと思います。 URLの登場回数を計算するために、perlの連想配列を利用します。 最終的には、連想配列に覚えこませたページビュー数を表示してサンプルスクリプトは終了します。
以下に、perlスクリプトのサンプルを示します。
#!/usr/bin/perl
# (注意)/usr/bin/perlの部分は必要に応じて変更してください。
# (注意)"access_log.txt"は解析するアクセスログのファイル名に
# 変更してください
open(LOGFILE, "access_log.txt") || die $!;
# 一行ずつアクセスログファイルを読みます。
while (<LOGFILE>) {
# perlのパターンマッチを行っています。
# $1,$2,...$9にマッチした結果が入ります。
/^(.*) (.*) (.*) \[(.*)\] "(.*)" (.*) (.*) "(.*)" "(.*)"/;
# パターンマッチの結果を変数に代入しています。
$httprequest = $5;
# スペースで区切ります
@cols = split(" ", $httprequest);
# とりあえず、今回のサンプルではGETだけ気にします
# cgiに関して調べたいときなどには必要に応じてPOSTなどにも対応して下さい
if ($cols[0] eq "GET") {
# 2つ目のデータにリクエストされたURLが入っています
$url = $cols[1];
# 取得したURLをキーにした連想配列の値を増やします
$urlcount{$url}++;
}
}
close(FILE);
# 連想配列に覚えさせたページビュー数を表示します
# $keyには、URLが入っています
# $valueには、ページビュー数が入っています
while (($key, $value) = each(%urlcount)) {
print "$value\t$key\n";
}
exit;
ここでは、とりあえず最も単純なページビュー取得方法を説明しました。