本日  昨日
 
03/16(Sun) 01:58

リンク元ランキング
解説
  1. Web裏技さんのアクセス解析 webaxs.pl(オリジナル or 改造後のもの) で記録されたログデータ log.csvを使い、リンク元ランキング一覧を作成し、表示します。(サンプルはこちら)

  2. 「キーワード」でその訪問者がどのページからの来訪かを判定します。
    「キーワード」(MySweetHomepageのmshなど)はリンク元URLの中のそのページが特定できる言葉を選びます。例えば、Infowebの場合リンク元には次のようなものがあります。

    http://village.infoweb.ne.jp/msh/home/whoswho.htm
    http://village.infoweb.ne.jp/msh/whoswho/whos001.html
    http://village.infoweb.or.jp/msh/whosimg/img001.html

    3つのURLに共通の msh を「キーワード」に選びます。

  3. 1つのリンク元について、NAME/HTML定義部と判定部とがペアになってます。$NAME[4]、$HTML[4] 、$CNT[4]と配列番号の同じものが1セットです。あなたのページに合った内容に変更して使って下さい。

  4. 新しいリンク元を追加する時は、NAME/HTML定義部 $NAME[4] = 'MySweetHomePage';$HTML[4] = 'http://village.infoweb.ne.jp/msh/home/whoswho.htm'; とそれに対応する判定部 elsif ($ref =~/msh/) {$CNT[4]++;} を追加します。

下のスクリプトをマウスでドラッグし「コピー」「貼りつけ」でコピーできます。
#!/usr/local/bin/perl #↑perlの存在するpathに書き換えてください。 ############################################################################# # リンク元ランキング pageview.cgi # Copyright (c) 1998 菊池さん <http://kikuchisan.net/> ############################################################################# # #-------------------------------------------------------------------# # ログ記録ファイルのパス設定 $log = "./log.csv"; #-------------------------------------------------------------------# # HTMLヘッダを出力 print "Content-type: text/html\n\n"; #環境変数取得 $buffer = $ENV{'QUERY_STRING'}; @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $form{$name} = $value; } $disp = $form{'disp'}; #---------------------------------------------------------- # NAME/HTML定義部 # $CNT[i]に対応したページ名とURLの対応表です。 $NAME[0] = 'その他';$HTML[0] = ''; $NAME[1] = 'ブックマーク or URL直接入力';$HTML[1] = ''; $NAME[2] = 'file://';$HTML[2] = ''; $NAME[3] = 'MySweetHomePage';$HTML[3] = 'http://village.infoweb.ne.jp/'; $NAME[4] = 'Yahoo検索';$HTML[4] = 'http://www.yahoo.co.jp/'; $NAME[5] = 'InfoNavigator検索';$HTML[5] = 'http://infonavi.infoweb.ne.jp/'; $NAME[6] = 'InfoSeek検索';$HTML[6] = 'http://www.infoseek.co.jp/'; $NAME[7] = 'CSJindex検索';$HTML[7] = 'http://www.csj.co.jp/'; $NAME[8] = 'OCNサーチ';$HTML[8] = 'http://search.ocn.ne.jp/'; $NAME[9] = 'Real SnowBoardさん';$HTML[9] = 'http://www.realsnowboard.com/'; #---------------------------------------------------------- $len = @NAME; # 配列の要素数 # 現在時刻取得 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time + 9*3600); # 上記のgmtimeで取得した$monには0から11までの数字が入るので修正処理 $month = ($mon + 1); # 曜日変換処理 # $wdayには0から6までの数字が入り曜日に対応している $y0="日"; $y1="月"; $y2="火"; $y3="水"; $y4="木"; $y5="金"; $y6="土"; $youbi = ($y0,$y1,$y2,$y3,$y4,$y5,$y6) [$wday]; # 時刻を2桁に統一する処理 if ($mday < 10) { $mday = "0$mday"; } if ($min < 10) { $min = "0$min"; } if ($hour < 10) { $hour = "0$hour"; } $date_now = "$month/$mday($youbi) $hour:$min"; # ログを配列@linesに読み込む open(DB,"$log"); @lines = <DB>; close(DB); # 各データを項目別に集計する foreach $line (@lines) { ($hour,$ref,$rh,$hua,$dummy,$dummy2) = split(/\,/,$line); $n++; # 判定部 ----- 来訪経路の特定文字列の検索と集計 if ($ref eq '') {$CNT[1]++;} elsif ($ref =~/file:/) {$CNT[2]++;} elsif ($ref =~/msh/) {$CNT[3]++;} elsif ($ref =~/yahoo/) {$CNT[4]++;} elsif ($ref =~/infonavi/){$CNT[5]++;} elsif ($ref =~/infoseek/){$CNT[6]++;} elsif ($ref =~/csj/) {$CNT[7]++;} elsif ($ref =~/search\.ocn/) {$CNT[8]++;} elsif ($ref =~/geocities/ && $ref =~/2432/) {$CNT[9]++;} else {$CNT[0]++;} #---------------------------------------------------------- } # 件数の多い順にソート $i = 0; # データ列の作成 $sum = 0; while ($i < $len){ $s = sprintf("%04d",$CNT[$i]); if ($CNT[$i] eq "") { $CNT[$i]=0;} $DATA[$i]= "$s\,$NAME[$i]\,$HTML[$i]\,$CNT[$i]\n"; $sum = $sum + $CNT[$i]; $i++; } @DATA = sort(@DATA); @DATA = reverse(@DATA); # ソート # ここからHTMLの出力 print "<html><head><title>リンクランキング</title></head>\n"; print "<BODY bgcolor=\"#FFE4C4\">\n"; print "<P ALIGN=right><FONT SIZE=2><I>$date_now</I></FONT></P>\n"; print "<table border=0><tr><td>\n"; print "<TABLE BORDER=3 BGCOLOR=\"#0000FF\"><TR><TH>"; print "<H2><FONT COLOR=\"#FFFF00\">リンク元ランキング</FONT></TABLE><p>\n"; print "<td><form method=\"GET\" action=\"pageview.cgi\">"; print "<input type=\"submit\" value=\"全表\示\">"; print "<input type=hidden name=\"disp\" value=\"all\"></form>"; print "</td></tr></table><p>\n"; print " ■ 総サンプル数:最新<FONT COLOR=\"#FF0000\"><B> $n </B></FONT>アクセス<p>\n"; print "<center><table border bgcolor=white bordercolor=blue width=\"70%\">\n"; print "<tr bgcolor=\"#66CC99\"><th width=\"5%\">順位</th>"; print "<th width=\"50%\">ページ名</th><th width=\"10%\">件数</th></tr>\n"; # 1行出力 $j = 1; foreach $line (@DATA) { ($s,$name,$url,$cnt) = split(/\,/,$line); if ($disp eq "all" || $s >= 1) { if ($url =~/http:\/\//) { print "<tr><td align=center>$j</td>"; } print "<td><a href=$url target=\"_blank\">$name</a></td>"; } print "<th><FONT COLOR=\"#CC285F\">$cnt</FONT></th></tr>\n"; } else { print "<tr><td align=center>$j</td><td>$name</td>"; } print "<th><FONT COLOR=\"#CC285F\">$cnt</FONT></th></tr>\n"; } $j++; } } print "<tr bgcolor=cyan><td> </td><th>合計</th><th>$sum</th></tr>\n"; print "</table></center><br>\n"; print "</body></html>\n";


 
 
©1997- Kikuchisan's workshop All rights reserved //

スポンサーリンク

関連コンテンツ