用Python解析nginx日志
我建立了一个视频网站,网站的结构非常简单,有一个首页、一个列表页和一个观看页。现在我想统计每个观看页被点击的次数,观看页的URL结构是:/v/id.html
这是日志文件的一部分:
58.52.168.119 - - [25/Aug/2014:00:00:30 +0800] "GET /v/31635.html HTTP/1.1" 200 10451 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36 SE 2.X MetaSr 1.0"
58.52.168.119 - - [25/Aug/2014:00:00:39 +0800] "GET /v/31635.html HTTP/1.1" 200 10451 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36 SE 2.X MetaSr 1.0"
125.85.189.50 - - [25/Aug/2014:00:00:42 +0800] "GET / HTTP/1.1" 200 44240 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1"
42.49.223.150 - - [25/Aug/2014:00:00:50 +0800] "GET / HTTP/1.1" 200 44240 "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
66.249.69.247 - - [25/Aug/2014:00:00:59 +0800] "GET /v/926.html HTTP/1.1" 200 10484 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
我可以从日志中获取点击次数和页面ID,但我不知道怎么把这些信息导入到数据库里。我想定义一些方法来访问这些统计信息。
get_yesterday_click(id) #get yesterday's click times
get_last7days_click(id) #get last week's click times
get_last30days_click(id) #get last month's click times
get_total_click(id) #get the total click times
有没有人能帮我创建表格并实现这些方法?
1 个回答
0
好的,问题用一种很笨的方法解决了。
首先,使用Python来解析日志文件,得到一个字典。
然后,把这个字典以JSON格式写入一个文件。
接着,使用PHP读取这个JSON文件,并将数据写入数据库。我的stat
表大概是这样的:
+-------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | cdate | char(8) | YES | | | | | day_click | int(11) | YES | | 0 | | | week_click | varchar(200) | YES | | | | | month_click | varchar(500) | YES | | | | | total_click | int(11) | YES | | 1000 | | +-------------+--------------+------+-----+---------+-------+
其中一条测试记录是这样的:
| 31967 | 20140826 | 2 | 2,2,2,2,2,2 | 2,2,2,2,2,2 | 12 |
week_click
和month_click
是用队列的方式来实现的。
希望能看到更好的方法来实现这个统计程序。