>  기사  >  백엔드 개발  >  Python은 nginx 액세스 로그를 기반으로 클라이언트 IP 방문 수를 계산합니다.

Python은 nginx 액세스 로그를 기반으로 클라이언트 IP 방문 수를 계산합니다.

WBOY
WBOY원래의
2016-08-08 09:22:211206검색

Baidu Statistics, Google Analytics, cnzz 등 전문 통계 사이트와 기타 통계 배경에서는 uv, pv, 온라인 시간, ip 등 웹마스터에게 일반적으로 사용되는 통계 지표를 제공합니다. 또한 네트워크상의 이유로 인해 Google Analytics는 Baidu 통계보다 IP가 수백 개 더 많을 것이라는 것을 알았으므로 실제 방문 수를 이해하기 위해 자체 스크립트를 작성하고 싶습니다. 그러나 스파이더가 많기 때문에 nginx 기반 액세스 로그는 통계 백엔드보다 훨씬 더 많을 것입니다. 방문 횟수도 계산됩니다. 들어와보세요. 실제로 알고리즘을 개선하면 이러한 쓸모없는 통계를 필터링할 수 있습니다. 오늘은 가장 기본적인 통계를 여러분과 공유하고 검토할 것입니다. 파이썬 언어.

예를 들어 서버의 nginx 로그는 다음과 같습니다.

221.221.155.54 - - [02/Aug/2014:15:16:11 +0800] "GET / HTTP/ 1.1" 200 8482 "http://www.zuidaima.com/" "Mozilla/5.0(Windows NT 6.1; WOW64) AppleWebKit/537.36(KHTML, like 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.zuidaima.com/" "Mozilla/5.0 ( Windows NT 6.1 ; WOW64) AppleWebKit/537.36 (KHTML, like 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.zuidaima.com/" "Mozilla/5.0(Windows NT 6.1; WOW64) AppleWebKit/537.36(KHTML, like 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"
패턴 = 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")
for line in f:
match = Pattern.match(line )
if match:
ip=match.group(0)
if ip in ret:
views=ret[ip]
else:
             views =0
          = 조회수+1
RET [IP] = 조회수
RETURN RET
DEF RUN ():
IP_Views = Stat_ip_views (zuidaima_nginx_log_path)
max_ip_view = { } ip_views의 ip:
views=ip_views[ip]
if len(max_ip_view)==0:
max_ip_view[ip]=views
else:
_ip=max_ip_view.keys() [ 0]
_views=max_ip_view[_ip]
if views>_views:
max_ip_view[ip]=views
max_ip_view.pop(_ip)
           인쇄 "ip:", ip, " ,views:", views
​ #총 IP 개수
​​ print "total:", len(ip_views)
​​ #최대 방문 IP
​​ print " max_ip_view:", max_ip_view
run()
실행 결과는 다음과 같습니다:


ip: 221.221.155.53, 조회수: 1

ip: 221.221.155.54, 조회수: 2
총계: 2
max_ip_view : {' 221.221.155.54': 2}

이렇게 해서 모든 IP의 방문수와 가장 큰 IP의 방문수를 구합니다.


위 내용은 측면을 포함하여 nginx 액세스 로그를 기반으로 한 클라이언트 IP 방문에 대한 Python의 통계를 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.