ホームページ  >  記事  >  バックエンド開発  >  Python は nginx アクセス ログに基づいてクライアント IP アクセスをカウントします

Python は nginx アクセス ログに基づいてクライアント IP アクセスをカウントします

WBOY
WBOYオリジナル
2016-08-08 09:22:211220ブラウズ

Baidu Statistics、Google Analytics、cnzz やその他の統計バックエンドなどの専門的な統計 Web サイトは、UV、PV、オンライン時間、IP など、Web マスター向けに一般的に使用される統計指標を提供します。さらに、ネットワーク上の理由により、次のことがわかりました。 Google Analytics は数百の IP をカウントする Baidu よりも優れているため、実際の訪問数を把握するために独自のスクリプトを作成したいと考えています。ただし、スパイダーの訪問も多く発生するため、nginx に基づくアクセス ログは統計的なバッ​​クエンドよりもはるかに大きくなります。実際、アルゴリズムが改善されれば、それらの役に立たない統計データを除外することができ、また Python 言語を学習して復習することもできます。

たとえば、サーバー上の nginx ログは次のとおりです:

221.221.155.54 - - [02/Aug/2014:15:16:11 +0800] "GET / HTTP/1.1" 200 8482 "http:/ /www.zudaima.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML、Gecko など) Chrome/31.0.1650.57 Safari/537.36" "-" "0.020"
221.221.155.53 - - [ 02/Aug /2014:15:16:11 +0800] "GET / HTTP/1.1" 200 8482 "http://www.zudaima.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 ( KHTML、Gecko など) Chrome/31.0.1650.57 Safari/537.36" "-" "0.020"
221.221.155.54 - - [02/Aug/2014:15:16:11 +0800] "GET / HTTP/1.1" 200 8482 "http://www.zudaima.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML、Gecko など) Chrome/31.0.1650.57 Safari/537.36" "-" "0.020"

統計スクリプトは次のとおりです:

stat_ip.py

#encoding=utf8
import re
zuidaima_nginx_log_path="/usr/local/nginx/logs/www.zuidaima.com.access.log"
pattern = re.compile(r '^d{1, 3}.d{1,3}.d{1,3}.d{1,3}')
def stat_ip_views(log_path):
ret={}
f = open(log_path, "r")f:for f:
else:
views =0
views= views +1
ret [ip] =views
,,,,,,,,,,,,, [ ip]
len(max_ip_view)= =0の場合:
max_ip_view[ip]=views ;_views:
max_ip_view[ip]=views )
print "ip:", ip, ",views:", views
#总共有いくらip
print "total:", len(ip_views)
#最大访问的ip
print "max_ip_view:", max_ip_view
run ()
実行結果は次のとおりです:


ip: 221.221.155.53、views: 1
ip: 221.221.155.54、views: 2
total: 2
max_ip_view: {'221.221.155.54': 2}

all ip訪問数と最大 IP 訪問数。


上記は、Python が nginx のアクセス ログに基づいてクライアント IP の訪問をカウントする方法をその側面も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。