# -*- coding: utf-8 -*-
# 网站日志IP统计【只统计前三段】,输出txt,格式:IP前三段:访问次数(一行一个)
def count_ip_from_log():
# ====================== 需修改的配置 开始 ======================
log_file_path = r"C:\Users\EDY\Desktop\工作\sitemap\日志查询\www.asxue.cn.log" # 你的本地日志文件路径
save_txt_path = r"C:\Users\EDY\Desktop\工作\sitemap\日志查询\ip统计结果.txt" # 统计结果保存的txt路径+文件名
# ====================== 需修改的配置 结束 ======================
ip_3seg_count = {} # 字典存储:key=IP前三段,value=总访问/抓取次数
# 读取日志文件,逐行处理,不占内存,支持大文件
with open(log_file_path, 'r', encoding='utf-8', errors='ignore') as f:
for line in f:
line = line.strip()
if not line: # 跳过空行
continue
# 提取每行的第一个字段【就是日志的IP】,网站日志通用格式都是开头为IP
ip = line.split()[0]
# ========== 核心修改:截取IP的前3段 ==========
ip_3_segment = '.'.join(ip.split('.')[:3])
# 统计前三段IP的总抓取次数:存在则+1,不存在则初始化为1
ip_3seg_count[ip_3_segment] = ip_3seg_count.get(ip_3_segment, 0) + 1
# 按【总抓取次数】从多到少 降序排列
sorted_ip_count = sorted(ip_3seg_count.items(), key=lambda x: x[1], reverse=True)
# 将排序后的统计结果写入txt文件,严格按【IP前三段:总次数】一行一个的格式
with open(save_txt_path, 'w', encoding='utf-8') as txt_f:
for ip_3seg, total_num in sorted_ip_count:
txt_f.write(f"{ip_3seg}:{total_num}\n")
print(f"✅ 统计完成!结果已保存至:{save_txt_path}")
print(f"✅ 共统计到【{len(ip_3seg_count)}】个独立的前三段IP")
# 执行程序
if __name__ == '__main__':
count_ip_from_log()
# 网站日志IP统计【只统计前三段】,输出txt,格式:IP前三段:访问次数(一行一个)
def count_ip_from_log():
# ====================== 需修改的配置 开始 ======================
log_file_path = r"C:\Users\EDY\Desktop\工作\sitemap\日志查询\www.asxue.cn.log" # 你的本地日志文件路径
save_txt_path = r"C:\Users\EDY\Desktop\工作\sitemap\日志查询\ip统计结果.txt" # 统计结果保存的txt路径+文件名
# ====================== 需修改的配置 结束 ======================
ip_3seg_count = {} # 字典存储:key=IP前三段,value=总访问/抓取次数
# 读取日志文件,逐行处理,不占内存,支持大文件
with open(log_file_path, 'r', encoding='utf-8', errors='ignore') as f:
for line in f:
line = line.strip()
if not line: # 跳过空行
continue
# 提取每行的第一个字段【就是日志的IP】,网站日志通用格式都是开头为IP
ip = line.split()[0]
# ========== 核心修改:截取IP的前3段 ==========
ip_3_segment = '.'.join(ip.split('.')[:3])
# 统计前三段IP的总抓取次数:存在则+1,不存在则初始化为1
ip_3seg_count[ip_3_segment] = ip_3seg_count.get(ip_3_segment, 0) + 1
# 按【总抓取次数】从多到少 降序排列
sorted_ip_count = sorted(ip_3seg_count.items(), key=lambda x: x[1], reverse=True)
# 将排序后的统计结果写入txt文件,严格按【IP前三段:总次数】一行一个的格式
with open(save_txt_path, 'w', encoding='utf-8') as txt_f:
for ip_3seg, total_num in sorted_ip_count:
txt_f.write(f"{ip_3seg}:{total_num}\n")
print(f"✅ 统计完成!结果已保存至:{save_txt_path}")
print(f"✅ 共统计到【{len(ip_3seg_count)}】个独立的前三段IP")
# 执行程序
if __name__ == '__main__':
count_ip_from_log()
声明:本文网友投稿,观点仅代表作者本人,不代表鲁班SEO赞同其观点或证实其描述。
