无障碍 关怀版

18行Python代码获取友盟数据

使用过友盟做产品数据监测的同学都知道,如果监控的账号或产品、版本、渠道过多,那抄录数据的工作将变得生不如死。

那么我们来看看怎样使用Python+友盟API来自动化的实现数据获取吧。

Anacoda

首先,你需要一个友盟的OPEN API文档。

可以去友盟官网申请,填写相关信息,一般一两天工作人员就会将文档用邮件发送回来。

也可以去这里下载:

其次,你需要配置好Python。用到的安装包有:requests(负责处理请求、认证及返回结果)、pandas(处理数据并存储文档)

推荐安装Anacoda,它已经集成了众多的数据分析包(包括pandas),可以节省大量的安装和处理报错问题的时间(天朝的网络,你懂的;Windows的各种冲突,你也懂的)。这里使用的是Anacoda2.7.10版本。

安装好Anacoda后,打开Windows自带的CMD窗口,输入:pip install requests来安装requests。

等到提示成功后,就可以开始着手数据获取工作了。

数据获取:

先看代码

解释一下,第一行申明了编码形式utf-8,以免使用中文出错。

第8-10行,import了后面需要使用到的几个库。开头做了解释,就不多说了。

第12-13行,使用requests的get方法获取数据,并赋值给content括号内的参数第一个是友盟提供的相应数据地址URL,第二部分auth是授权代码(将内容替换成你自己的用户名和密码,上面是友盟的示例账号,已经不能使用了)。在代码编写环节,可以使用:print content.text查看数据结构,以便进行进一步处理。

因为友盟API文档已说明返回的数据是json格式,因此我们推荐将结果复制到 这个网站进行解析,可以很清晰的看到我们获取数据的结果(tips:如果是抓取网页数据或获得的是其他类型数据,可能就需要使用正则表达式或beautisoup之类的工具来获取想要的内容)。

我们看json.cn解析的结果:

清晰吧!

左侧是我们复制进去的数据,右侧是解析出的结果,减号可以点击折叠,这个功能在返回的数据层次特别多的时候非常有用。

那么,怎么用代码解析数据?可能很多人认为,既然数据结构这么好,直接存成文件,用excel分列——筛选——再处理,不就有结果了?

但是很抱歉,似乎并没有这样的方法。所以我们要做数据清洗的工作,把需要的数据提取出来。

观察json.cn解析出的数据结构:最外层是以中括号开始的表示是列表;内部有大括号包含的内容,可以理解为字典(基本可以这么理解,小括号是元组,中括号是列表,大括号是字典)。

列表和字典都可以被索引,但索引的方式不同,列表可以使用编号进行索引:

例如我们将上述内容赋值给x,那么就可以用索引x[0]获取第一个中括号内的所有内容,用x[1]获取第二个中括号内的所有内容。

获取的x[0]是中括号代表字典的内容,童谣可以被索引,但索引的方式是key-value对,也就是我们要写出相应的冒号前面的名称:

例如x[0][“name”],就可以取到“Android Demo App”这个值。

于是我们假设想得到appname和appkey两个内容(appname是方便我们统计使用,appkey是后续获取各种数据的基础)。

第14行,因为返回的content是一个response对象,需要用内置的json()函数做解析,形成字典,这一行就是解析的作用,结果就是形成我们复制到json.cn中的数据结果。形成的content_json就是可以被索引的对象了。

第15-17行,定义一个i,来进行循环获取数据,同时定义两个空列表来存储获取到的appname和appkey信息。

我们上面得到的content_json的列表和字典是可以计算长度的,例如上述例子中,len(content_json)的结果就是2,表示该列表有两个元素。

第18-23行:所以循环体中,我们可以依据上面获得的长度来遍历。因为Python的索引是从0开始的,只需要遍历到小于2就可以了。中间的key=content_json[i][“appkey”]就表示获取列表中第i个位置里面字典的appkey对应的值。然后通过append方法将获取到的东西追加到前面定义的空列表中。

第24行,将获取到的两个列表合并,方便后面形成文件查看。

第25-26行,用pandas处理数据,并导出成txt文件。第25行中的index可以不加,但最后的结果就会没有列名称。第26行,对第25行的数据转置,并用to_csv方法存储文件。其中的encoding是对中文进行编码,除了“gb2312”,还可以尝试使用“gbk”,“utf-8”,这取决于获取数据的网页的编码形式;这里的index表示行名称,没有意义,所以写成false,否则默认会生成1,2,3……的编号。当然,这里的文件后缀名也可以写成csv,但貌似有时候会出错,所以建议还是用txt吧。

最终的结果就是这样的:

然后复制或者导入到Excel进行处理就非常方便了。

整个过程就完成了。作为一个初学者,在实现这个功能之前主要遇到两个瓶颈。

第一个:怎么从网上返回内容,于是看了很多通过httplib2等获取数据的资料,最后发现requests挺好用。

第二个:是返回的数据结果怎么存储为自己想要的文件,这个解析的过程,开始想的是整个存下来再处理;后来发现,应该用程序内部的逻辑来解决这个问题。 返回搜狐,查看更多

责任编辑:

平台声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
阅读 ()

玻璃钢生产厂家淄博玻璃钢仿铜雕塑厂家安阳玻璃钢雕塑厂家哪家好张界玻璃钢牛雕塑宣威市玻璃钢雕塑设计批发玻璃钢雕塑怎么样做钛金效果福建玻璃钢酒店人物雕塑西城区商场美陈公司报价宁夏卡通玻璃钢雕塑设计中国玻璃钢雕塑网河北景区玻璃钢雕塑设计贵港玻璃钢雕塑公园玻璃钢雕塑狗狗楚雄商场美陈六安商场美陈布展山东玻璃钢商场美陈雕塑河源自发光动物玻璃钢雕塑供应商榆林人物玻璃钢雕塑公司贺州市玻璃钢雕塑定制濮阳玻璃钢小狗雕塑青海动物玻璃钢雕塑公司大头儿子玻璃钢雕塑建邺商场新春美陈山西高质量玻璃钢雕塑制作玻璃钢浮雕喷泉雕塑厂台州商场美陈费用莆田玻璃钢卡通雕塑上海商场美陈价钱昭通市玻璃钢雕塑如何商场美陈属于什么设计玻璃钢仿生雕塑有哪些香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化