用过友盟统计的小伙伴都知道,它并不支持数据的批量导出。虽然友盟提供了图表可视化功能,对应的数据都会在图表附近给出下载链接,但也恰恰因为如此,导致不同的数据指标分散在各个不同的页面,变成了按不同应用、不同页面、不同维度划分的碎片化数据。因此,从友盟导出数据,不但下载过程费时费力(根据笔者的亲身经历,单调重复性的工作特别容易使人烦躁抓狂~~~),而且下载下来的数据还需要大量的整合、处理才能正式进入分析阶段。总而言之,费时费力。
笔者深受其害,也花了很长时间寻找其他更方便快捷的方式,特别是使用python 3的方式。因为笔者当时正在拼命自学python 3,且此前并没有python 2的基础,这也是为什么没有直接使用友盟官方提供的python 2版Open API接口文档的原因(小白真的是看不懂啊!在此呼吁友盟,赶紧出python 3版啊!)。然而网上相关的资料实在寥寥,截至目前仅找到一处实用的参考,以下这两篇文章出自同一位作者的手笔:
1.友盟爱恨情仇之Open API接口文档(python版)
2.友盟爱恨情仇之自定义事件流量数据获取——python语言版
作者:黄嘉锋,来源:简书https://www.jianshu.com/u/b5481f413a2e
在分析研究了这位导表小哥的杰作之后,笔者根据自己当时所学重新编写了一下代码,仅供诸君参考使用,亦欢迎诸君在此基础上持续优化,造福更多的导表同学~~~
import numpy as np
import pandas as pd
import urllib.request
import urllib.error
import urllib.parse
import re
import json
import datetime
#获取认证auth_token
email='xxxx' #友盟账号
password='xxx' #友盟密码
url = r'http://api.umeng.com/authorize'
name = {
'email':email,
'password':password
}
name=urllib.parse.urlencode(name)
name=name.encode('utf-8')#转换成bytes格式,才能被Request调用
req=urllib.request.Request(url,name)#构建完整请求,增加了headers等信息
auth_token= urllib.request.urlopen(req).read().decode('utf-8','ignore')
print(auth_token)
#auth_token=eval(auth_token).get('auth_token') #eval()函数将字符串转换成字典,dict.get()函数按照key提取相应的value
auth_token=json.loads(auth_token).get('auth_token') #json.loads()将字符串转换成json格式。这种方式更常用,且适用范围更广
auth_token
#获取AP