全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

python正则分析nginx的访问日志

前言

本文的脚本是分析nginx的访问日志, 主要为了检查站点uri的访问次数的,检查的结果会提供给研发人员做参考,因为谈到分析嘛,那肯定要用到正则表达式了,所以请没有接触过正则的小伙伴自行补脑,因为涉及正则的内容,实在没法展开写,正则的内容太过庞大,根本不是一篇两篇能写清楚的。

开始前,我们先看看要分析的日志结构:

127.0.0.1 - - [19/Jun/2012:09:16:22 +0100] "GET /GO.jpg HTTP/1.1" 499 0 "http://domain.com/htm_data/7/1206/758536.html" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; SE 2.X MetaSr 1.0)"
127.0.0.1 - - [19/Jun/2012:09:16:25 +0100] "GET /Zyb.gif HTTP/1.1" 499 0 "http://domain.com/htm_data/7/1206/758536.html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QQDownload 711; SV1; .NET4.0C; .NET4.0E; 360SE)"

这是修改过的日志内容,敏感内容都以删除或替换了,不过不影响我们的分析结果,当然格式什么的这都不重要,Nginx访问日志是可以自定义的,每家公司可能都会稍有不同,所以要能理解脚本内容,并通过自己修改应用到了自己工作中才是重点,我给的日志格式也就是个参考,我打赌你在你公司服务器上看到的日志格式肯定跟我的格式不一样, 看完日志格式,我们开始要写我们的脚本了

我先贴代码,稍后解释:

import re
from operator import itemgetter
 
def parser_logfile(logfile):
 pattern = (r''
   '(\d+.\d+.\d+.\d+)\s-\s-\s' #IP address
   '\[(.+)\]\s' #datetime
   '"GET\s(.+)\s\w+/.+"\s' #requested file
   '(\d+)\s' #status
   '(\d+)\s' #bandwidth
   '"(.+)"\s' #referrer
   '"(.+)"' #user agent
  )
 fi = open(logfile, 'r')
 url_list = []
 for line in fi:
  url_list.append(re.findall(pattern, line))
 fi.close()
 return url_list
 
def parser_urllist(url_list):
 urls = []
 for url in url_list:
  for r in url: 
   urls.append(r[5])
 return urls
 
def get_urldict(urls):
 d = {}
 for url in urls:
  d[url] = d.get(url,0)+1
 return d
 
def url_count(logfile):
 url_list = parser_logfile(logfile)
 urls = parser_urllist(url_list)
 totals = get_urldict(urls)
 return totals
 
if __name__ == '__main__':
 urls_with_counts = url_count('example.log')
 sorted_by_count = sorted(urls_with_counts.items(), key=itemgetter(1), reverse=True)
 print(sorted_by_count)

脚本解释,parser_logfile()函数功能是分析日志,返回匹配的行列表,正则部分就不解释了,大家看注释应该知道它是匹配什么内容的,parser_urllist()函数功能是将获取用户访问的url,get_urldict()函数功能是返回一个字典,以url为键,如果键相同值增1,返回的字典是每个url和最大的访问次数,url_count()函数功能就是调用了之前定义的函数,主函数部分,就说说itemgetter,它可以实现按指定元素进行排序,举例就明白了:

>>> from operator import itemgetter
>>> a=[('b',2),('a',1),('c',0)] 
>>> s=sorted(a,key=itemgetter(1))
>>> s
[('c', 0), ('a', 1), ('b', 2)]
>>> s=sorted(a,key=itemgetter(0))
>>> s
[('a', 1), ('b', 2), ('c', 0)]

reverse=True参数表示降序排序,就是从大到小排序,脚本运行结果:

[('http://domain.com/htm_data/7/1206/758536.html', 141), ('http://domain.com/?q=node&page=12', 3), ('http://website.net/htm_data/7/1206/758536.html', 1)]

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# python  # nginx日志  # nginx日志解析  # nginx  # 日志分析  # Nginx if语句加正则表达式实现字符串截断  # Nginx的正则表达式详解  # nginx location 配置 正则表达式实例详解  # nginx 伪静态Rewrite正则资源汇总  # Nginx rewrite正则匹配重写的方法示例  # nginx配置location总结location正则写法及rewrite规则写法  # nginx用正则表达式实现泛域名自动匹配目录的方法  # 如何利用nginx通过正则拦截指定url请求详解  # Nginx正则表达式相关的参数和规则介绍  # 这是  # 是个  # 也就  # 才是  # 就不  # 你在  # 是从  # 它是  # 看完  # 太过  # 我给  # 自定义  # 我先  # 它可以  # 这篇文章  # 谢谢大家  # 都以  # 提供给  # 不重要  # 稍有 


相关文章: 建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  网站制作需要会哪些技术,建立一个网站要花费多少?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  如何配置IIS站点权限与局域网访问?  Swift中switch语句区间和元组模式匹配  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  建站之星安装步骤有哪些常见问题?  如何在云主机上快速搭建多站点网站?  已有域名能否直接搭建网站?  如何登录建站主机?访问步骤全解析  移民网站制作流程,怎么看加拿大移民官网?  php json中文编码为null的解决办法  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  如何高效利用200m空间完成建站?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  建站VPS推荐:2025年高性能服务器配置指南  简历在线制作网站免费版,如何创建个人简历?  Android滚轮选择时间控件使用详解  建站之星伪静态规则如何设置?  如何快速上传自定义模板至建站之星?  免费视频制作网站,更新又快又好的免费电影网站?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  活动邀请函制作网站有哪些,活动邀请函文案?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  如何用y主机助手快速搭建网站?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  建站之星后台密码遗忘如何找回?  如何在橙子建站上传落地页?操作指南详解  如何在云指建站中生成FTP站点?  音响网站制作视频教程,隆霸音响官方网站?  ,怎么在广州志愿者网站注册?  建站之星下载版如何获取与安装?  h5在线制作网站电脑版下载,h5网页制作软件?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  定制建站价位费用解析与套餐推荐全攻略  山东网站制作公司有哪些,山东大源集团官网?  如何选择最佳自助建站系统?快速指南解析优劣  建站之星如何防范黑客攻击与数据泄露?  制作国外网站的软件,国外有哪些比较优质的网站推荐?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  如何通过网站建站时间优化SEO与用户体验?  如何快速建站并高效导出源代码?  如何在Windows虚拟主机上快速搭建网站?  建站主机如何安装配置?新手必看操作指南  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何在七牛云存储上搭建网站并设置自定义域名?  青岛网站建设如何选择本地服务器? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。