• 締切済み

Rubyでアクセス解析できるプログラム

Rubyを用いてアクセスログのデータから6時間ごとのアクセス数を表示するプログラムを作成したいのですが、どうにも上手くいかないので教えて頂きたいです。 アクセスログは↓このような感じで与えられ、 123.456.789--[11/July/2007:23:13:50+0900]"GET /hoge/hoge.html 223.032.045--[11/Jun/2007:04:35:11+0900]"GET /hoge/hoge.html 999.119.535--[11/Aug/2007:15:05:30+0900]"GET /hoge/hoge.html               : 下記のような表示結果が出力されるプログラムを得たいです。 00:00:00 ~ 05:59:59  アクセス数 06:00:00 ~ 11:59:59  アクセス数 12:00:00 ~ 17:59:59  アクセス数 18:00:00 ~ 23:59:59  アクセス数 どうかよろしくお願いします。

noname#34078
noname#34078

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

OKWave rubyアクセス解析 http://okwave.jp/qa3146751.html とほぼ同じことを訊いてますけどひょっとしてどこかで 問題として出されてたりしてます? とりあえず現状のスクリプトを晒してください。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>どうにも上手くいかないので教えて頂きたいです。 どう上手くいかないか書かないとねぇ。

関連するQ&A

  • rubyアクセス解析

    アクセスログを読み込んで、 日ごとの、3時間ごとのアクセス数をだすプログラムを作りたいんですが、うまくいかないので、ヘルプおねがいします。 最終的に出したいのが、 日/月/年 00:00:00 ~ 02:59:59 アクセス数 って形でずらーって出して行きたいです。 アクセスログは ahirhif[21/April/2007:03:12:01 +0900] huahiuhsi hfruoho[15/July/2006:09:17:05 +0900] hfurihure hifhier[01/Jun/2006:12:12:57 +0900] huisauhsi ieiuruo[21/April/2007:08:15:25 +0900] ruioopqqe ahirhif[17/April/2007:03:13:03 +0900] huahiuhsi hfruoho[18/September/2006:01:11:15 +0900] hfurihure hifhier[09/Jun/2006:13:13:59 +0900] huisauhsi ieiuruo[21/April/2007:09:20:21 +0900] ruioopqqe このような感じです。 どうかヘルプおねがいします。

  • Apacheログの解析

    rubyを使って aaabbb - - [20/Jun/2001:19:16:15 +0900] "GET / HTTP/1.0" 200 4636 bbbccc - - [20/Jun/2001:19:16:15 +0900] "GET /pbpenguin.png HTTP/1.0" 304 - http://sss.org/ aaaaaa - - [20/Jun/2001:19:16:15 +0900] "GET /pbdebian.png HTTP/1.0" 304 - http://aaa.org/ruby/ ssssss - - [20/Jun/2001:19:16:27 +0900] "GET /ruby/ HTTP/1.0" 200 4371 aaabbb - - [20/Jun/2001:19:16:30 +0900] "GET /ruby/rice.html HTTP/1.0" 200 2388 このようなapacheのログから、ホストごとのrefererを時系列順に表示するプログラムを作りたいのですが、 aaabbb -> 配列1 bbbccc -> 配列2 aaaaaa -> 配列3 ssssss -> 配列4 aaabbb -> 配列1 という風に同じホストごとに配列に格納するという処理をどう書けばいいのかが分かりません。 分かる方いましたら回答お願いします。

  • Ruby のコードの実行の仕方がわかりません。

    Ruby のコードの実行の仕方がわかりません。 私は、Javaプログラマーなのですが、Javaコードに行番号をつけて 整形したHTMLコードを出力してくれるツールを探していたところ Rubyで書かれたツール rb2html.rb にたどり着きました。 そこで、   http://rubyinstaller.org/download.html のサイトから、Ruby 1.8.7-p249 (RC2) をダウンロードし、WindowsXP(SP3)の   C:\Program Files\Ruby にインストールし   C:\Program Files\Ruby\bin にパスを通しました。コマンドプロンプトにて   C:\> ruby --version の入力に対して   ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mingw32] と出力されますので、インストールまでは成功していると思います。 次に、 rb2htmlrb を   http://www.nslabs.jp/rb2html.rhtml から   rb2html-2.4.tar.gz をダウンロードし、解凍後、rb2html-2.4 を   C:\Program Files\Ruby に置きました。 そして、とりあえずテストとして、同梱のsamples/Hoge.java で動作を確認してみようと   C:\Program Files\Ruby\rb2html-2.4>rb2html.rb samples/Hoge.java   | と入力してみたところ、何も出力されず、上記のようにカーソルが 点滅した状態で止まってしまっています。 どこに、問題があるのか、ご教授いただければ幸いです。

  • RubyプログラムでURLより取得したデータの出力

    Rubyにて、Twitterの出力結果をスクリプト経由で出力させるさせようとしていますが、日本語で出力させたいのですが、出力結果が下記のように文字化けしてしまうのですが、日本語として表示させることは可能でしょうか。-K kcodeオプションは試したのですが結果は変わりませんでした。 ご存知の方がいらっしゃれば、ご教示お願いいたします。 "description"=> "\u901A\u4FE1\u4E8B\u696D\u8005\u304B\u3089\u6D41\u308C\",

  • ログの解析プログラム

    perlにてログの解析プログラムを作成しております。 ログは各データの区切り文字がスペースで出力されます。 その為、例えば文字列で「プログラムの異常が発生しました (発生ノード)」が出力されている場合split関数によって配列に格納しようとすると「プログラムの異常が発生しました」と「(発生ノード)」に分解されて格納されてしまい後ほどの処理に影響が出てしまいます。ログの仕様として文字列を出力するときには直前に文字列の長さを提示しております。例えば「43 プログラムの異常が発生しました (発生ノード)」のような形で出力されます。これらの条件で文字列を一つの配列に格納するにはどのようなプログラムを組めばよろしいでしょうか。 現時点で考えているのは文字列の長さが出ているのでその回数分文字を1文字づつ読み込むことを考えております。ただし全角と半角の区別が自動でついてしまうと厄介なので全部半角として取り込めないかなどを検討しております。 なにか他にいいアイデアがありましたら教えてください。

  • rubyプログラム中の標準出力を表示しながら取得し

    ruby初心者です。 プログラム中の標準出力を、通常の出力も表示しながら取得したいと考えています。 自分でもいろいろ調べてみたのですが、 標準出力を取得する以下のようなコード ======================================================== # ブロック内の標準出力を取得する def capture_stdout out = StringIO.new $stdout = out yield return out.string ensure $stdout = STDOUT end (ttp://blog.livedoor.jp/sonots/archives/33344291.html) ================================================= は見つけたのですが、 これだと出力結果は、 capture_stdoutのブロックが終了しないことには取得できません。 capture_stdoutの中のブロック内プログラムの出力をコンソールに表示しながら、 最後に出力結果も取得したいのですが、 何か方法はあるのでしょうか? 教えてください。

    • ベストアンサー
    • Ruby
  • rubyの勉強をしていてプログラムを作っているのですがうまくいきません。

    rubyのプログラムを作っています。 指定したディレクトリの中の指定したファイルを検索します。 そしてファイルの有無を条件にして処理をしていくプログラムをつくっています。 イメージでは下記のような感じ if test.txtを検索(検索先のディレクトリは/../../tmp) #ファイル存在する なにもしない else #ファイルが存在しない test.txtを作成 処理1  test.txtを削除 end 日本語ばっかりで申し訳ないのですがこんな感じです。 今はifを使ったのですがそれ以外の方法でもかまいません。 できればサンプルのプログラムを載せていただけるとありがたいです。 ご教授をよろしくお願いします。 利用環境 Windows XP Home Edition cygwinをインストールしてrubyを実行しています

  • Javaのプログラムをルビー言語に。

    10~50までの素数が格納されている配列を rubyで作りたいのですが、どのようにすればいいいのかよくわかりません。 下のプログラムにも間違いがあるかもしれませんので もしありましたご指摘お願い致します。 for i=start i<=end i++;//iは割られる数 for(j=1;j<=i;j++){//jは割る数 if(i%j==0){ count++; } } if(count==2){ System.out.println(i); } iをjで割っていき、余りが0になったらカウントを増やしていくプログラムです。 素数は1とその数字でしか割れないので、カウントは2になり、 それを配列に格納したいのですが、ここではただ表示するだけに留まってしまっています。 まだruby初心者で分からないことだらけですので、 簡単な方法ではなく、出来ればfor文を使用したやり方で教えていただけると 幸いです。 よろしくお願い致します。

    • ベストアンサー
    • Ruby
  • 日ごとにあるページのアクセス集計を取りたい

    /var/log/httpd/access_log-20130118.gz /var/log/httpd/access_log-20130119.gz /var/log/httpd/access_log-20130120.gz とログがあります。 このログから、日別にGETで /site1/test.htmlページにアクセスした集計を取り 日ごとにアクセス数を出力したいのです。 <望む結果> 2013年1月18日 10件 2013年1月19日 20件 2013年1月20日 5件 できれば、forやgrepコマンドの組み合わせで標準出力にすることは出来ないでしょうか? ご教授お願いします。

  • ruby のプログラムについての質問です。

    ruby初心者です。作成したプログラムについて質問です。 某サイトの<td>セクター部分のデータを取得するプログラムを作ろうとしています。このプログラムのソースをあげときます。 # encoding: utf-8 require 'rubygems' require 'open-uri' require 'nokogiri' doc = Nokogiri::HTML(open("http://creofuga.net/"),nil,"utf-8") doc.css("td").each do |td| open("foo.txt", "w") do |f| f.write td.text end end このプログラムだと、最初のからデータを取得していくのですが、textファイルに書き込む際、1行目で得たデータを上書きをし、最終的に、サイトの最後の出たのみ出力する形となります。これをデータごとに改行しすべてのデータを出力するにはどのようにプログラムを変更すれば、よいかおしえてください。おねがいします。ちなみに最後に画像で取得したtextファイルのデータを上げときます。よろしくお願いします。

専門家に質問してみよう