python解析nginx日志

时间:2014-09-08 09:32:39

标签: python mysql nginx

我建立了一个视频网站,该网站的结构非常简单,一个索引页面,一个列表页面和一个观看页面。现在我想计算每个观看页面的点击次数,观看页面的网址结构为:/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 :(得分: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_clickmonth_click被实现为队列。

希望看到更好的方法来实施统计程序。