python處理iis日誌——統計頁面的訪問量

最近寫了一個簡單的使用python分析iis日誌的小demo,用於本身練手,寫的很差還要請高手多多指教。

代碼的總體思路:

一、首先得到位於iislog文件夾下的日誌文件
    定義了一個getfiles 函數,參數爲目錄名字
二、使用for循環遍歷讀取到的文件,用while循環讀取文件中的每一行
三、在while選擇將得到行進行處理,iis日誌文件遵循必定的規律,處理起來仍是比較容易的
四、將頁面做爲dict的key,使用 value來記錄頁面的訪問次數
五、循環輸出dict
六、使用linux 的sort命令將結果進行排序
以上就是一個基本的思路,鄙人在這裏拋磚引玉了。

貼上代碼 html

#! /usr/bin/python
#-*-coding:utf-8-*-
import os
import sys

def getfiles(dirname):
    return os.listdir(dirname)

def  countfiles():
    fpath=os.getcwd()+"/iislog/"
    files=getfiles(fpath)
    line_dic={}
    for f in files: #
        if os.path.isfile(fpath+f):
            fhandle=open(fpath+f,'r')
            l=fhandle.readline()
            while l:
                if l.startswith("#"):
                    l=fhandle.readline()
                    continue
                else:
                    file_line=l.split()
                    if file_line[4].endswith('.asp') or file_line[4].endswith('.aspx') or file_line[4].endswith('.html'):
                        url=file_line[3]+file_line[4]
                        if url not in line_dic:
                            line_dic[url]=1
                        else:
                            line_dic[url]=line_dic[url]+1
                    l=fhandle.readline()
    for k in line_dic:
        print k+'\t'+str(line_dic[k])
if __name__=="__main__":
    countfiles()

使用說明

一、將日誌文件放在iislog文件夾中
二、將代碼文件放在iislog的上級目錄中
三、運行python iislog.py |sort -nk 2 -r
四、耐心等待就能夠了
最後貼上部分結果

前面的字符串表示請求的方式以及頁面,後面的數字表示訪問的次數 python

GET/frame.asp	71990
GET/head.asp	11612
GET/loading.asp	9884
POST/choose/person.asp	7887
POST/house/query.asp	7720
POST/sales/detail_union_query.asp	7052
POST/choose/buy_search.asp	6850
POST/sales/sales_union_query.asp	6823
POST/choose/house.asp	6729
POST/choose/buy_goods_search2.asp	6504
POST/sales/union_show.asp	5496
POST/choose/contacts.asp	5494
POST/base/goods.asp	4868
POST/base/contacts_form.asp	4805
相關文章
相關標籤/搜索