我扒了Bugly的數據,只是想出個報表

版權聲明:html

本帳號發佈文章均來自公衆號,承香墨影(cxmyDev),版權歸承香墨影全部。node

未經容許,不得轉載。json

1、前言

做爲 Android 項目的負責人,被要求每週週報要出一份崩潰報表,沒辦法就只有作了。跨域

自己以爲這種數據作成圖表確定是比作成表格來的直觀,因此在第一週畫了兩個小時作一份圖表的報表出來以後,以爲這種重複的勞動力,仍是交給代碼來完成吧。瀏覽器

實際上,以前公司項目使用的是 umeng ,以後換成 Bugly 了,自己 umeng 是提供了公開的數據接口 ,須要企業認證一下就能夠了。不過 Bugly 並無提供相關的公開接口,這個我已經找 Bugly 的客服諮詢過了。cookie

既然已經從官方渠道拿不到數據接口,那麼咱們只能考慮別的路子獲取數據了,接下來看看個人作這件事情的步驟,但願對你們有幫助,一些敏感的信息,我就直接一筆帶過了,可是思路都分享出來了,若是你須要獲取其餘的數據,不只限於 Bugly ,也是有必定參考價值的。網絡

2、準備工做

一、肯定接口

已經決定好了要扒 Bugly 的數據了,那麼首先就須要瞭解到 Bugly 不一樣數據的接口分別是什麼,必要的參數是什麼。架構

肯定數據接口,能夠經過瀏覽器的開發者工具,中的 Network 中查看到當前頁面作網絡請求的時候,請求的接口和發送的數據。我這裏使用的是 Chrome。app

b-network.png

例如這裏就是一個崩潰分析裏,崩潰列表中的數據,而且數據是以 json 的形式來返回的。curl

既然拿到了接口,咱們固然須要先嚐試看看是否能夠在別的地方訪問,會不會有什麼限制。有一個快捷而有效的方式,能夠直接從連接中複製出 curl 的命令,而後在 Terminal 中執行,若是能獲取到數據,說明接口OK。

b-curl.png

當你已經肯定你須要的接口以後,你會發現它傳遞的數據很是的多,一些例如 appid、startDate、endDate 這種,很是一目瞭然的接口,能夠直接猜到含義。可是也有一些咱們看着沒有含義的參數,就須要從網頁中找到數據的來源了。

通常而言,這種數據從這幾個地方找,都會有所收穫:

  1. 網頁的元素內。
  2. 內嵌 js 中的一些常量字符串。
  3. cookies
  4. Window 中一些全局的變量內。

就 Bugly 的接口而言,其實看着接口傳遞的參數很是的多,可是嘗試逐一刪除後,就會發現只有兩個參數是有效的,分別能夠在頁面的 meta 元素和 Cookies 中找到對應的參數,細節就很少說了。

這些數據均可以在開發者工具中找到。

二、選一個報表的庫

作數據分析,原本可使用 Python 來作,Python 作爬蟲和數據分析都很是的有優點。可是後來我以爲 JS 庫會比較炫酷一點,並且作成網頁,會比較容易分享,就找了一個 JS 的圖標庫:fusioncharts,這個庫用起來很簡單,並且每一個圖標多有不一樣的圖表 Demo 均可以直接運行看效果,使用起來難度也不大,基本上看一下就明白了。

雖然 fusioncharts 是一個商業庫,可是隻要你的圖標不用於商業,就不會有問題。

Paste_Image.png

點擊官網的圖表均可以看到 demo,而且能夠根據須要修改數據,及時看到效果,因此學習成本並不高:

Paste_Image.png

官網 :www.fusioncharts.com

三、肯定架構

雖然是個簡單的爬蟲加數據展現的工具,可是也須要先肯定如何獲取數據,如何展現數據。

這裏選擇的就是直接使用 node 爬出必要的數據,存儲在本地,而後使用 fusioncharts 在一個 Html 網頁中展現以前存儲的數據內容的分析結果。

這樣實際上是最簡單的,不用關心 js 的跨域問題,只是單純的抓數據,而後分析展現,讓抓數據和展現數據分離開。

3、Coding

既然前期工做已經準備好,後面就須要開始編碼了。

首先我將爬取數據的 js 和展現數據的 html 分開。

結構大概是這樣的:

Paste_Image.png

index.js 就是用於爬取的數據的入口 js ,只須要執行它就會將咱們須要的數據所有爬取到 tmp 目錄下。

index.html 就是用於展現分析後的數據結果的,它將 tmp 中存儲的數據,分析完成以後,直接使用圖表的形式展現出來。

config.js 用於配置一些接口所須要的必要數據,這裏主要配置了前面提到的接口中須要用到的必要數據,以及不一樣 App 須要監聽的版本號和 appId 等,這裏就不展現了。

其實更便捷的作法是直接將必要數據也想辦法扒下來,這樣能夠作到一鍵生成報表,可是實際上,我須要使用的頻度並不高,每週一次,從網頁裏獲取一下,修改 config 裏對應的配置就可使用,因此怎麼簡單怎麼來。

這裏的場景,主要是三部分數據:所有版本的崩潰率、最近一個市場版本的崩潰率、最後一個市場版本crash前五列表,因此在 tmp 目錄下,能夠看到每一個 App 有三份數據。

最終執行完成以後,就能夠在 index.html 中看到報表的數據了,手裏原本也沒有測試數據,這裏就不一一展現了。

4、結語

這種重複的工做,就讓咱們交給代碼來解決吧。

這裏再一次說明,會一門腳本語言的重要性,實際上 Python、Js 都是很是好的語言。有時候須要一些批量處理的時候,這些腳本語言能夠幫咱們節約不少時間,基本上算是一勞永逸。

最後,我想說,我只是想每週出個報表。但願 Bugly 不要修改接口讓我一直用下去。固然若是儘快提供公開的 API 就更好了。

公衆號二維碼.jpg
相關文章
相關標籤/搜索