黑马程序员技术交流社区

标题: 【上海校区】正则分析log日志文件 [打印本页]

作者: lsl.tutu    时间: 2018-8-30 21:37
标题: 【上海校区】正则分析log日志文件
本帖最后由 lsl.tutu 于 2018-8-30 21:41 编辑
分享技术:    使用re模块分析log日志文件
准备工作:  日志文件过大, 截图放在下面
目标:  根据日志文件完成四个需求
# 需求
# 1. 从log日志文件匹配出访问总量
# 2. 匹配出每一个ip访问次数
# 3. 匹配出访问次数最多的是那一个分钟
# 4. 匹配出爬虫访问的次数



关于下面五张图片的注释:
# 整体的日志信息,日志过长,没有截取全部

# 第一个需求的截图

# 第二个需求的截图

# 第三个需求的截图

# 第四个需求的截图

代码在下方:   


import re
def data_list():
"""
读取文件,分割读取内容
:return:
"""
with open('日志.log','r') as f:
datas = f.read().split('\n')
return datas

datas = data_list()

# 1. 从log日志文件匹配出访问总量
def visit_nums():
nums = len(datas)
# print('访问总量',nums)

visit_nums()
# 2. 匹配出每一个ip访问次数
def every_ip_nums():
ip_dicts = {}
for data in datas:
ip = re.findall(r'(\d+\.\d+\.\d+\.\d+)', data)[0]
if ip not in ip_dicts.keys():
ip_dicts[ip] = 1
else:
ip_dicts[ip] += 1
# print('每个ip访问的次数',ip_dicts)

every_ip_nums()
# 3. 匹配出访问次数最多的是那一个分钟
def max_time():
time_dicts = {}
for data in datas:
time = re.findall(r'\[20/Jun/(2018:\d+:\d+):\d+ \+0800\]', data)[0]
if time not in time_dicts.keys():
time_dicts[time] = 1
else:
time_dicts[time] += 1
# 只排序不改变原表
keys_sort = sorted(time_dicts, key=time_dicts.get)
print('访问次数最的时间是',keys_sort)
print(time_dicts['2018:00:17'])

max_time()
# 4. 匹配出爬虫访问的次数
def Spider_visit():
spiders = 0
for data in datas:
if 'spider' in data:
spiders += 1
Spider_visit()


作者: 不二晨    时间: 2018-9-6 11:19
奈斯




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2