版权声明:html
本帐号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影全部。node
未经容许,不得转载。json
做为 Android 项目的负责人,被要求每周周报要出一份崩溃报表,没办法就只有作了。跨域
自己以为这种数据作成图表确定是比作成表格来的直观,因此在第一周画了两个小时作一份图表的报表出来以后,以为这种重复的劳动力,仍是交给代码来完成吧。浏览器
实际上,以前公司项目使用的是 umeng ,以后换成 Bugly 了,自己 umeng 是提供了公开的数据接口 ,须要企业认证一下就能够了。不过 Bugly 并无提供相关的公开接口,这个我已经找 Bugly 的客服咨询过了。cookie
既然已经从官方渠道拿不到数据接口,那么咱们只能考虑别的路子获取数据了,接下来看看个人作这件事情的步骤,但愿对你们有帮助,一些敏感的信息,我就直接一笔带过了,可是思路都分享出来了,若是你须要获取其余的数据,不只限于 Bugly ,也是有必定参考价值的。网络
已经决定好了要扒 Bugly 的数据了,那么首先就须要了解到 Bugly 不一样数据的接口分别是什么,必要的参数是什么。架构
肯定数据接口,能够经过浏览器的开发者工具,中的 Network 中查看到当前页面作网络请求的时候,请求的接口和发送的数据。我这里使用的是 Chrome。app
例如这里就是一个崩溃分析里,崩溃列表中的数据,而且数据是以 json 的形式来返回的。curl
既然拿到了接口,咱们固然须要先尝试看看是否能够在别的地方访问,会不会有什么限制。有一个快捷而有效的方式,能够直接从连接中复制出 curl 的命令,而后在 Terminal 中执行,若是能获取到数据,说明接口OK。
当你已经肯定你须要的接口以后,你会发现它传递的数据很是的多,一些例如 appid、startDate、endDate 这种,很是一目了然的接口,能够直接猜到含义。可是也有一些咱们看着没有含义的参数,就须要从网页中找到数据的来源了。
通常而言,这种数据从这几个地方找,都会有所收获:
就 Bugly 的接口而言,其实看着接口传递的参数很是的多,可是尝试逐一删除后,就会发现只有两个参数是有效的,分别能够在页面的 meta 元素和 Cookies 中找到对应的参数,细节就很少说了。
这些数据均可以在开发者工具中找到。
作数据分析,原本可使用 Python 来作,Python 作爬虫和数据分析都很是的有优点。可是后来我以为 JS 库会比较炫酷一点,并且作成网页,会比较容易分享,就找了一个 JS 的图标库:fusioncharts,这个库用起来很简单,并且每一个图标多有不一样的图表 Demo 均可以直接运行看效果,使用起来难度也不大,基本上看一下就明白了。
虽然 fusioncharts 是一个商业库,可是只要你的图标不用于商业,就不会有问题。
点击官网的图表均可以看到 demo,而且能够根据须要修改数据,及时看到效果,因此学习成本并不高:
虽然是个简单的爬虫加数据展现的工具,可是也须要先肯定如何获取数据,如何展现数据。
这里选择的就是直接使用 node 爬出必要的数据,存储在本地,而后使用 fusioncharts 在一个 Html 网页中展现以前存储的数据内容的分析结果。
这样实际上是最简单的,不用关心 js 的跨域问题,只是单纯的抓数据,而后分析展现,让抓数据和展现数据分离开。
既然前期工做已经准备好,后面就须要开始编码了。
首先我将爬取数据的 js 和展现数据的 html 分开。
结构大概是这样的:
index.js 就是用于爬取的数据的入口 js ,只须要执行它就会将咱们须要的数据所有爬取到 tmp 目录下。
index.html 就是用于展现分析后的数据结果的,它将 tmp 中存储的数据,分析完成以后,直接使用图表的形式展现出来。
config.js 用于配置一些接口所须要的必要数据,这里主要配置了前面提到的接口中须要用到的必要数据,以及不一样 App 须要监听的版本号和 appId 等,这里就不展现了。
其实更便捷的作法是直接将必要数据也想办法扒下来,这样能够作到一键生成报表,可是实际上,我须要使用的频度并不高,每周一次,从网页里获取一下,修改 config 里对应的配置就可使用,因此怎么简单怎么来。
这里的场景,主要是三部分数据:所有版本的崩溃率、最近一个市场版本的崩溃率、最后一个市场版本crash前五列表,因此在 tmp 目录下,能够看到每一个 App 有三份数据。
最终执行完成以后,就能够在 index.html 中看到报表的数据了,手里原本也没有测试数据,这里就不一一展现了。
这种重复的工做,就让咱们交给代码来解决吧。
这里再一次说明,会一门脚本语言的重要性,实际上 Python、Js 都是很是好的语言。有时候须要一些批量处理的时候,这些脚本语言能够帮咱们节约不少时间,基本上算是一劳永逸。
最后,我想说,我只是想每周出个报表。但愿 Bugly 不要修改接口让我一直用下去。固然若是尽快提供公开的 API 就更好了。