美文网首页小技巧,大智慧Android知识Android开发
我扒了Bugly的数据,只是想出个报表

我扒了Bugly的数据,只是想出个报表

作者: 承香墨影 | 来源:发表于2017-04-16 15:34 被阅读170次

    版权声明:

    本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有。

    未经允许,不得转载。

    一、前言

    作为 Android 项目的负责人,被要求每周周报要出一份崩溃报表,没办法就只有做了。

    本身觉得这种数据做成图表肯定是比做成表格来的直观,所以在第一周画了两个小时做一份图表的报表出来之后,觉得这种重复的劳动力,还是交给代码来完成吧。

    实际上,之前公司项目使用的是 umeng ,之后换成 Bugly 了,本身 umeng 是提供了公开的数据接口 ,需要企业认证一下就可以了。不过 Bugly 并没有提供相关的公开接口,这个我已经找 Bugly 的客服咨询过了。

    既然已经从官方渠道拿不到数据接口,那么我们只能考虑别的路子获取数据了,接下来看看我的做这件事情的步骤,希望对大家有帮助,一些敏感的信息,我就直接一笔带过了,但是思路都分享出来了,如果你需要获取其他的数据,不仅限于 Bugly ,也是有一定参考价值的。

    二、准备工作

    1、确定接口

    已经决定好了要扒 Bugly 的数据了,那么首先就需要了解到 Bugly 不同数据的接口分别是什么,必要的参数是什么。

    确定数据接口,可以通过浏览器的开发者工具,中的 Network 中查看到当前页面做网络请求的时候,请求的接口和发送的数据。我这里使用的是 Chrome。

    b-network.png

    例如这里就是一个崩溃分析里,崩溃列表中的数据,并且数据是以 json 的形式来返回的。

    既然拿到了接口,我们当然需要先尝试看看是否可以在别的地方访问,会不会有什么限制。有一个快捷而有效的方式,可以直接从链接中复制出 curl 的命令,然后在 Terminal 中执行,如果能获取到数据,说明接口OK。

    b-curl.png

    当你已经确定你需要的接口之后,你会发现它传递的数据非常的多,一些例如 appid、startDate、endDate 这种,非常一目了然的接口,可以直接猜到含义。但是也有一些我们看着没有含义的参数,就需要从网页中找到数据的来源了。

    一般而言,这种数据从这几个地方找,都会有所收获:

    1. 网页的元素内。
    2. 内嵌 js 中的一些常量字符串。
    3. cookies
    4. Window 中一些全局的变量内。

    就 Bugly 的接口而言,其实看着接口传递的参数非常的多,但是尝试逐一删除后,就会发现只有两个参数是有效的,分别可以在页面的 meta 元素和 Cookies 中找到对应的参数,细节就不多说了。

    这些数据都可以在开发者工具中找到。

    2、选一个报表的库

    做数据分析,本来可以使用 Python 来做,Python 做爬虫和数据分析都非常的有优势。但是后来我觉得 JS 库会比较炫酷一点,而且做成网页,会比较容易分享,就找了一个 JS 的图标库:fusioncharts,这个库用起来很简单,而且每个图标多有不同的图表 Demo 都可以直接运行看效果,使用起来难度也不大,基本上看一下就明白了。

    虽然 fusioncharts 是一个商业库,但是只要你的图标不用于商业,就不会有问题。

    Paste_Image.png

    点击官网的图表都可以看到 demo,并且可以根据需要修改数据,及时看到效果,所以学习成本并不高:

    Paste_Image.png

    官网 :http://www.fusioncharts.com

    3、确定架构

    虽然是个简单的爬虫加数据展示的工具,但是也需要先确定如何获取数据,如何展示数据。

    这里选择的就是直接使用 node 爬出必要的数据,存储在本地,然后使用 fusioncharts 在一个 Html 网页中展示之前存储的数据内容的分析结果。

    这样其实是最简单的,不用关心 js 的跨域问题,只是单纯的抓数据,然后分析展示,让抓数据和展示数据分离开。

    三、Coding

    既然前期工作已经准备好,后面就需要开始编码了。

    首先我将爬取数据的 js 和展示数据的 html 分开。

    结构大概是这样的:

    Paste_Image.png

    index.js 就是用于爬取的数据的入口 js ,只需要执行它就会将我们需要的数据全部爬取到 tmp 目录下。

    index.html 就是用于展示分析后的数据结果的,它将 tmp 中存储的数据,分析完成之后,直接使用图表的形式展示出来。

    config.js 用于配置一些接口所需要的必要数据,这里主要配置了前面提到的接口中需要用到的必要数据,以及不同 App 需要监听的版本号和 appId 等,这里就不展示了。

    其实更便捷的做法是直接将必要数据也想办法扒下来,这样可以做到一键生成报表,但是实际上,我需要使用的频度并不高,每周一次,从网页里获取一下,修改 config 里对应的配置就可以使用,所以怎么简单怎么来。

    这里的场景,主要是三部分数据:全部版本的崩溃率、最近一个市场版本的崩溃率、最后一个市场版本crash前五列表,所以在 tmp 目录下,可以看到每个 App 有三份数据。

    最终执行完成之后,就可以在 index.html 中看到报表的数据了,手里本来也没有测试数据,这里就不一一展示了。

    四、结语

    这种重复的工作,就让我们交给代码来解决吧。

    这里再一次说明,会一门脚本语言的重要性,实际上 Python、Js 都是非常好的语言。有时候需要一些批量处理的时候,这些脚本语言可以帮我们节约很多时间,基本上算是一劳永逸。

    最后,我想说,我只是想每周出个报表。希望 Bugly 不要修改接口让我一直用下去。当然如果尽快提供公开的 API 就更好了。

    公众号二维码.jpg

    相关文章

      网友评论

      • 悟_空:就 Bugly 的接口而言,其实看着接口传递的参数非常的多,但是尝试逐一删除后,就会发现只有两个参数是有效的,分别可以在页面的 meta 元素和 Cookies 中找到对应的参数,细节就不多说了。
        这两个参数是什么?是 curl 的参数吗?能给参数名说一下吗
        承香墨影:@悟_空 太久了 具体细节不记得了。你可以自己抓一下看看。

      本文标题:我扒了Bugly的数据,只是想出个报表

      本文链接:https://www.haomeiwen.com/subject/dkpaattx.html