某些原因,一开始没有设计网站的统计模块

如今需要加上,只能借助于百度统计或者阿里云的cdn日志文件,阿里云cdn的日志文件是web的访问信息

log

[9/Mar/2016:00:00:16 +0800] 222.171.7.89 - 62113 "http://cloud.insta360.com/post/5e7b029d8ed7e3c4b23006a71bab73c8?e=true&m=true" "GET http://cloud.insta360.com/public/media/mp4/5e7b029d8ed7e3c4b23006a71bab73c8_960x480.mp4" 206 509 20516390 HIT "Mozilla/5.0 (iPhone; CPU iPhone OS 8_4_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12H321 NewsApp/5.3.2" "video/mp4"

fileds

时间

访问IP

回源IP

responsetime

referer

method

访问URL

httpcode

requestsize

responsesize

cache命中状态

UA头

文件类型

re

# 将单条记录转换为Dict对象

def line2dict(line):

# Snippet, thanks to http://www.seehuhn.de/blog/52

parts = [

r'\[(?P.+)\]', # 时间 %t

r'(?P\S+)', # 访问IP %h

r'(?P\S+)', # 回源IP %h

r'(?P[0-9]+)', # 响应时间 %>s

r'"(?P.*)"', # Referer "%{Referer}i"

r'"(?P.+)"', # 请求地址 "%r"

r'(?P[0-9]+)', # Httpcode %>s

r'(?P\S+)', # 请求大小 %b (careful, can be '-')

r'(?P[0-9]+)', # 响应大小 size %>s

r'(?P\S+)', # 缓存状态 %s

r'"(?P.*)"', # user agent "%{User-agent}i"

r'"(?P.*)"', # content type "%{Content-type}i"

]

pattern = re.compile(r'\s+'.join(parts) + r'\s*\Z')

m = pattern.match(line)

res = m.groupdict()

return res

script

AliyunLog.py

# coding=utf-8

import fileinput

import re

import os

try:

import simplejson as json

except ImportError:

import json

# 读取输入文件并返回Dict对象

def readfile(file):

filecontent = {}

index = 0

statinfo = os.stat(file)

# just a guestimate. I believe a single entry contains atleast 150 chars

if statinfo.st_size < 150:

print "Not a valid log file. It does not have enough data"

else:

for line in fileinput.input(file):

index = index + 1

if line != "\n": # don't read newlines

filecontent[index] = line2dict(line)

fileinput.close()

return filecontent

# 将单条记录转换为Dict对象

def line2dict(line):

# Snippet, thanks to http://www.seehuhn.de/blog/52

parts = [

r'\[(?P.+)\]', # 时间 %t

r'(?P\S+)', # 访问IP %h

r'(?P\S+)', # 回源IP %h

r'(?P[0-9]+)', # 响应时间 %>s

r'"(?P.*)"', # Referer "%{Referer}i"

r'"(?P.+)"', # 请求地址 "%r"

r'(?P[0-9]+)', # Httpcode %>s

r'(?P\S+)', # 请求大小 %b (careful, can be '-')

r'(?P[0-9]+)', # 响应大小 size %>s

r'(?P\S+)', # 缓存状态 %s

r'"(?P.*)"', # user agent "%{User-agent}i"

r'"(?P.*)"', # content type "%{Content-type}i"

]

pattern = re.compile(r'\s+'.join(parts) + r'\s*\Z')

m = pattern.match(line)

res = m.groupdict()

return res

# 转换整个记录为Json对象

def toJson(file):

entries = readfile(file)

return json.JSONEncoder(indent=4).encode(entries)

main.py

#!/usr/bin/env python

# coding=utf-8

import sys

from AliyunLog import *

def main():

if len(sys.argv) < 3:

print "Incorrect Syntax. Usage: python main.py -f "

sys.exit(2)

elif sys.argv[1] != "-f":

print "Invalid switch '" + sys.argv[1] + "'"

sys.exit(2)

elif os.path.isfile(sys.argv[2]) == False:

print "File does not exist"

sys.exit(2)

print toJson(sys.argv[2])

if __name__ == "__main__":

main()

result

run script

python main.py -f data

terminal

{

"6432": {

"res_time": "1728",

"res_ip": "118.114.213.118",

"req_size": "768",

"req_url": "GET http://cloud.insta360.com/public/media/mp4/f9e4bf15d452440c2884b234854d089c_audio.mp3",

"origin_ip": "-",

"referer": "http://cloud.insta360.com/post/f9e4bf15d452440c2884b234854d089c?m=true&from=timeline&isappinstalled=0",

"content_type": "audio/mpeg",

"time": "9/Mar/2016:00:59:58 +0800",

"ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13C75 MicroMessenger/6.3.13 NetType/WIFI Language/zh_CN",

"http_code": "206",

"res_size": "5290084",

"cache_status": "HIT"

},

...

}

more

python刷新cdn_使用Python解析阿里云CDN日志相关推荐

  1. 通过Python脚本下载【来此加密的免费HTTPS SSL证书】并自动更新到服务器和阿里云CDN

    异想之旅:本人原创博客完全手敲,绝对非搬运,全网不可能有重复:本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告.本人所有文章仅在CSDN.掘金和个人博客(一定是异想之旅域名)发布,除此之外全部是 ...

  2. 【阿里云原生应用】使用阿里云FC函数计算完成阿里云CDN目录刷新

    目录 需求背景 关于OSS静态网站托管 OSS静态网站托管之CDN缓存刷新问题 开始着手解决 CDN-刷新预热 预热刷新API SDK技术选型 基础流程 FC函数计算 创建函数 Python HTTP ...

  3. 通过AccessKey调用阿里云CDN接口刷新CDN资源案例

    通过AccessKey远程调用阿里云CDN接口,快速实现自动化集成部署. CdnService.java package com.nfky.cdn; import com.aliyuncs.Defau ...

  4. 群辉默认DDNS功能解析阿里云-自定义服务商

    前言 前不久买了个群辉NAS发现群辉DDNS不能解析阿里云,后来找了很多教程都是部署Docker或使用其他平台转发一下,然而这些平台还要注册,我就在想我自己可不可以实现不需要注册就可以使用的DDNS, ...

  5. 《机器学习在线 解析阿里云机器学习平台》读书笔记

    原文 最近读了阿里的<大数据之路-阿里巴巴大数据实践>,对于其机器学习平台也蛮感兴趣,正好阿里出了本新书<解析阿里云机器学习平台>,顺便读了下,感触也不少,结合最近团队机器学习 ...

  6. 小麦盒子cdn_阿里云CDN入门使用配置

    01. 概述 介绍: 阿里云CDN分发网络,它是替代传统以Web Server为中心的数据传输模式,将源站资源缓存到全国各地的边缘服务器.供用户就近获取,提高用户体验,降低源站压力. 阿里云CDN它分 ...

  7. 阿里云 CDN 问题排查

    CDN 几种使用常见的架构 CDN诊断工具: 1.client 出口 IP,DNS 访问到的 CDN 节点 IP https://cdn.dns-detect.alicdn.com/https/doc ...

  8. 百度地图李东旻:中国地图行业最终只会剩下一两个玩家/阿里云CDN再降价25%

    每一个企业级的人 都置顶了 中国软件网 中国软件网 为你带来最新鲜的行业干货 小编点评 应届生年薪30万 干几年年薪80万 还猎头主动找上门 AI行业这是得多缺人啊 想想自己几千块的工资 小编好想哭 ...

  9. 阿里云CDN(内容分发网络)学习笔记day01

    阿里云CDN(内容分发网络)学习笔记day01 标签(空格分隔): linux Content Delivery Network 基于阿里云 文章目录 阿里云CDN(内容分发网络)学习笔记day01 ...

最新文章

  1. ant 获取当前url的参数
  2. Yoshua:深度学习AI迈向人类水平的挑战(附PPT下载)
  3. 网久环境服务启动命令
  4. SVN代码冲突解决方案小集合
  5. 题目1102:最小面积子矩阵
  6. Ubuntu下安装node canvas
  7. 随便聊一些编程开发工具
  8. SQL基础三(例子)
  9. 第一个python爬虫_Python爬虫01——第一个小爬虫
  10. 一层循环时间复杂度_数据结构与算法系列——时间、空间复杂度
  11. c 语言min max 归一化,归一化方法 Normalization Method
  12. 如何关闭Steam的弹出广告
  13. 计算机科学与技术U盘,速度竟差9倍!6款32GB USB3.0优盘横评
  14. Qt之简易版网络调试助手
  15. Sping AOP 源码解析(一、动态 AOP 自定义标签 aop:aspectj-autoproxy)
  16. android 消息提示机制
  17. linux里面的注释命令是啥,LINUX基础命令注释大全
  18. 下一代 Web 应用模型 — Progressive Web App
  19. C++:分数处理(约分、加减乘除、假分数输出)
  20. DSP28335 CAN模块使用

热门文章

  1. VUE基础用法(四)
  2. Ubuntu 14.04重装mysql
  3. 免密登录驾考网使用selenium自动爬取模拟试题
  4. linux 上 gcc -m32 编译报错解决方案
  5. 整顿风暴后网址导航将何去何从 如何孕育重生
  6. iOS-微信朋友圈图片压缩算法
  7. termux获取sd卡读写权限_原来是用错了读卡器,雷克沙lexar 1667X 真实读写性能测试...
  8. strings.Builder 源码阅读与分析
  9. 深圳盛世光影简述影视后期制作包括哪些工作?
  10. 世界杯ing~这不来个实时数据可视化?(结尾附源码)