python项目练习——7.网站访问日志分析器

项目功能分析:

这个项目可以读取网站的访问日志文件,统计访问量、独立访客数、访问来源等信息,并以图表或表格的形式展示出来。这个项目涉及到文件操作、数据处理、数据可视化等方面的技术。

示例代码:

import re
from collections import Counter
import matplotlib.pyplot as plt

def parse_log_file(log_file):
    # 读取日志文件内容
    with open(log_file, 'r') as file:
        logs = file.readlines()

    # 解析日志文件并统计访问来源
    user_agents = []
    referrers = []
    for log in logs:
        # 使用正则表达式提取用户代理和引荐来源信息
        user_agent_match = re.search(r'"([^"]*)"', log)
        referrer_match = re.search(r'"([^"]*)"$', log)
        if user_agent_match:
            user_agents.append(user_agent_match.group(1))
        if referrer_match:
            referrers.append(referrer_match.group(1))

    return user_agents, referrers

def plot_statistics(data, title, xlabel, ylabel, rotation=None):
    # 绘制柱状图
    plt.figure(figsize=(10, 6))
    plt.bar(data.keys(), data.values(), color='skyblue')
    plt.xlabel(xlabel)
    plt.ylabel(ylabel)
    plt.title(title)
    if rotation:
        plt.xticks(rotation=rotation)
    plt.tight_layout()
    plt.show()

if __name__ == '__main__':
    log_file = 'access.log'  # 替换为你的网站访问日志文件路径
    user_agents, referrers = parse_log_file(log_file)

    # 统计用户代理
    user_agent_counts = Counter(user_agents)
    plot_statistics(user_agent_counts, '用户代理分布', '用户代理', '访问次数')

    # 统计引荐来源
    referrer_counts = Counter(referrers)
    plot_statistics(referrer_counts, '引获来源分布', '引获来源', '访问次数', rotation=90)
 

代码逻辑分析:

首先定义了一个函数 parse_log_file(),它接受一个日志文件路径作为参数,读取日志文件内容,并使用正则表达式解析日志文件,提取出用户代理和引获来源信息。然后,使用 Counter 类统计用户代理和引获来源的访问次数,并调用 plot_statistics() 函数绘制柱状图来展示统计结果。在主程序中,指定了网站访问日志文件的路径,并调用这两个函数来实现日志分析和数据可视化。

 

相关推荐

  1. python项目练习——7.网站访问日志分析器

    2024-03-31 18:42:06       37 阅读
  2. python项目练习——15.网页爬虫应用程序

    2024-03-31 18:42:06       39 阅读
  3. python项目练习——14.学生管理系统

    2024-03-31 18:42:06       40 阅读
  4. python项目练习——22、人脸识别软件

    2024-03-31 18:42:06       36 阅读
  5. python项目练习——29.贪吃蛇

    2024-03-31 18:42:06       37 阅读
  6. python项目练习——31.赛车游戏

    2024-03-31 18:42:06       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-31 18:42:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-31 18:42:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-31 18:42:06       87 阅读
  4. Python语言-面向对象

    2024-03-31 18:42:06       96 阅读

热门阅读

  1. 数据可视化之多表显示

    2024-03-31 18:42:06       39 阅读
  2. 软件之禅(十一) 消息

    2024-03-31 18:42:06       35 阅读
  3. vim的缓冲区管理技能

    2024-03-31 18:42:06       34 阅读
  4. ChatGPT:学术界必备的写作利器

    2024-03-31 18:42:06       36 阅读
  5. C 语言练习分享

    2024-03-31 18:42:06       38 阅读
  6. leetcode 64.最小路径和

    2024-03-31 18:42:06       36 阅读
  7. vue组件的select怎么赋值?

    2024-03-31 18:42:06       43 阅读
  8. Leetcode-2952-需要添加的硬币的最小数量-c++

    2024-03-31 18:42:06       38 阅读
  9. C++多线程:unique_lock源码分析与使用详解(六)

    2024-03-31 18:42:06       38 阅读
  10. 为什么Redis设计成单线程

    2024-03-31 18:42:06       38 阅读