Python 2.7-查找Web服务器命中数

474

我正在尝试按年份计算每个日历月(12月,1月,2月,..)对Web服务器的点击次数。

我是Python的新手,所以我什至不知道从哪里开始。我想您必须使用一些字符串拆分或正则表达式。

我得到一个带有以下输出的日志文件:

[31/Dec/1994:23:55:08 -0700] "GET 45.html HTTP/1.0" 200 5489  
remote - - [31/Dec/1994:23:56:55 -0700] "GET 2195.ps HTTP/1.0" 200 522318 
remote - - [31/Dec/1994:23:59:37 -0700] "GET 957.ps HTTP/1.0" 200 122146 
remote - - [01/Jan/1995:00:31:54 -0700] "GET index.html HTTP/1.0" 200 2797 
remote - - [01/Jan/1995:00:31:58 -0700] "GET 2.gif HTTP/1.0" 200 2555
remote - - [01/Jan/1995:00:32:33 -0700] "GET 3.gif HTTP/1.0" 200 36403
remote - - [01/Jan/1995:01:39:21 -0700] "GET 20.html HTTP/1.0" 200 378
local - - [01/Jan/1995:01:47:41 -0700] "GET index.html HTTP/1.0" 200 2797
local - - [01/Jan/1995:01:47:49 -0700] "GET 39.html HTTP/1.0" 200 669
local - - 
安通

拆分比应用正则表达式更容易(IMO)。您可以通过以下日志行来使用以下函数来提取这些值:

def year_month(s):
     try:
         discard, month, rest = s.split('/', 2)  # split twice on '/' 
     except ValueError:
         return None  # for last line without /
     year = rest.split(':', 1)[0]
     year = int(year)  # optional
     return year, month

您可以使用此函数返回的元组作为某些字典的键:

d = {}
for line in open('yourfile'):
    ym = year_month(line)
    if ym is None:
         continue
    x = d.setdefault(ym, [0])
    x[0] += 1
for ym in sorted(d):
    print('Year: {0}, Month: {1}, Hits: {2}'.format(ym[0], ym[1], d[ym][0]))

如果要使用正则表达式,则可以将year_month()部分替换为

import re

# see https://docs.python.org/2/howto/regex.html
year_month_pattern = re.compile(r"""
.*/
(?P<month>.*)
/
(?P<year>\d*)
:.*
""", re.VERBOSE)

def year_month(s):
    res = year_month_pattern.match(s)
    if res is None:
        return None
    try:
        return int(res.group('year')), res.group('month')
    except ValueError:
        pass

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Amazon EC2上远程访问Python Web服务器

来自分类Dev

无法在Windows 7中启动服务器服务。错误2:找不到文件

来自分类Dev

Python:urllib2错误“名称或服务器未知”

来自分类Dev

IIS7服务器上的Web服务用于Apache服务器上的网站

来自分类Dev

减少服务器响应时间-Debian 7上的apache2

来自分类Dev

spring boot 2.0 M7如何实现oauth2服务器配置?

来自分类Dev

角2,@ Input或OnInit生命周期挂钩并命中服务器?

来自分类Dev

角2,@ Input或OnInit生命周期挂钩并命中服务器?

来自分类Dev

Abyss Web服务器和Python

来自分类Dev

使用python的Web服务器

来自分类Dev

python中的Web服务器in plainText

来自分类Dev

Python CGI Web服务器

来自分类Dev

Gwt前端与python Web服务器

来自分类Dev

Python Web服务器错误

来自分类Dev

运行Python Web服务器

来自分类Dev

本地服务器提供了错误的文件。我可能正在运行2个python服务器吗?

来自分类Dev

Java EE 5、6和7兼容的应用程序服务器是否与J2EE兼容?

来自分类Dev

Java EE 5、6和7兼容的应用程序服务器是否与J2EE兼容?

来自分类Dev

通过2台SSH服务器从Win7计算机到srv2008的rdp-无根

来自分类Dev

webstorm 7 / karma服务器在调试coffeescript时查找错误的sourcemap文件

来自分类Dev

哪些Web服务器支持HTTP / 2

来自分类Dev

Linux Ubuntu中的Apache2 Web服务器

来自分类Dev

从代理服务器调用Web API 2

来自分类Dev

MAAS Apache2 Web服务器配置

来自分类Dev

无法从Apache2 Web服务器加载图像

来自分类Dev

杀死MongoDB服务器-Windows 7

来自分类Dev

CentOS 7 VPN服务器

来自分类Dev

Windows 7的打印服务器属性

来自分类Dev

Python Web服务器UTF8编码

Related 相关文章

热门标签

归档