import My SQLdb import re from datetime import










代码实现 import My. SQLdb import re from datetime import datetime conn=My. SQLdb. Connect( host='127. 0. 0. 1', port=3306, user='root', passwd='', db='shixi', charset='utf 8' ) cursor=conn. cursor() f=open(‘G: \tt. txt’, ‘rb’) ip=r'(d+. ){3}d+' fi=r'(/+w+)+(Ww+)*. htm' ti=r'd{2}/w+/d{4}: d{2}: d{2}' p=f. readline() http: //Rec. Sys. xmu. edu. cn #配置mysql接口参数 #读取日志文件 - 10 -

代码实现 while p: k 1=re. search(ip, p) #匹配ip地址 if k 1!=None: k 2=re. search(fi, p) #匹配文件路径 if k 2!=None: k 3=re. search(ti, p) #匹配访问时间 msql='select * from news where User_time=(select max(User_time) from news)‘ #筛选出访问时间最大的记录 cursor. execute(msql) lines=cursor. fetchall() k 4=datetime. strptime(k 3. group(), '%d/%b/%Y: %H: %M: %S') if lines==(): #数据表中无记录,则直接插入数据表 sql = ‘insert into news(User_ip, User_time, User_file) values (%s, %s)‘ cursor. execute(sql, (k 1. group(), k 4, k 2. group())) http: //Rec. Sys. xmu. edu. cn - 11 -
![代码实现 else: #数据表不为空,判断记录是否已经存在于数据表 flag=0 #标志位,判断ip是否出现在最新的数据表记录中 for x in lines: print x if cmp(x[1], k 代码实现 else: #数据表不为空,判断记录是否已经存在于数据表 flag=0 #标志位,判断ip是否出现在最新的数据表记录中 for x in lines: print x if cmp(x[1], k](http://slidetodoc.com/presentation_image/50aa4cddb08a6fa1602f71bde2945077/image-12.jpg)
代码实现 else: #数据表不为空,判断记录是否已经存在于数据表 flag=0 #标志位,判断ip是否出现在最新的数据表记录中 for x in lines: print x if cmp(x[1], k 1)==0: flag=1 times=x[2] if cmp(times, k 4)<0: cursor. execute(sql, (k 1. group(), k 4, k 2. group())) #插入数据 elif cmp(times, k 4)==0 and flag==0: cursor. execute(sql, (k 1. group(), k 4, k 2. group())) #插入数据 p=f. readline() print 'end' conn. commit() cursor. close() conn. close() http: //Rec. Sys. xmu. edu. cn - 12 -

http: //Rec. Sys. xmu. edu. cn - 13 -
- Slides: 13