微信聊天記錄統(tǒng)計

任務(wù):獲取自己和朋友A的全部微信聊天記錄,并做簡單的數(shù)據(jù)分析統(tǒng)計(如下圖所示的一些數(shù)據(jù))


根據(jù)聊天內(nèi)容生成的詞云

每個小時段的消息個數(shù)分布瓶摆,可見夜里微信消息過多拴清,熬夜的元兇找到了

每個月的消息個數(shù)

任務(wù)分析

整體任務(wù)分為兩個大步驟事期,獲取聊天記錄和數(shù)據(jù)統(tǒng)計轧房。數(shù)據(jù)統(tǒng)計比較容易,畢竟網(wǎng)上有很多教程可以借鑒逐虚。最麻煩的是第一步——獲取聊天記錄聋溜。

微信官方不提供聊天記錄的文本導(dǎo)出方法。我們要想獲取聊天記錄叭爱,最直接的方法就是一條條復(fù)制到txt文檔里撮躁,但這個方法太笨,不適合聊天記錄特別多的情形买雾。在網(wǎng)上一番檢索把曼,踩過一些坑后杨帽,終于成功導(dǎo)出。在這里把過程記錄一下嗤军。

思路是這樣的:手機端的微信會把消息記錄存在一個數(shù)據(jù)庫文件(EnMicroMsg.db)中注盈。但這個文件加了密,需要密碼才打得開叙赚。幸運的是老客,密碼能夠被計算出來。

密碼的計算需要兩個號碼:一個是微信所用手機的串號IMEI(15-17位數(shù)字)震叮,另一個是微信的用戶信息號(也就是uin胧砰,一般8-10位數(shù)字)。這兩個號碼按先IMEI后uin的順序首尾拼在一起(中間不加任何字符)形成一個23~27位數(shù)字苇瓣。對這長串?dāng)?shù)字做32位的MD5尉间,得到的結(jié)果取前七位,就獲得了數(shù)據(jù)庫文件的密碼击罪。

注意:這里有個坑哲嘲,網(wǎng)上都沒有說,這七位中的大寫字母一定要轉(zhuǎn)化成小寫字母才行媳禁!


獲取微信聊天記錄

從前面分析可知眠副,要獲取微信聊天記錄,需要集齊三大法器: 數(shù)據(jù)庫文件(EnMicroMsg.db)损话、手機IMEI和微信uin侦啸。但手機沒有root的話槽唾,這三個法器也沒法直接獲取丧枪,只能借助手機模擬器才行。這里采用藍(lán)疊模擬器來說明整個步驟庞萍。

  1. 借助PC微信客戶端將聊天記錄導(dǎo)入模擬器

    • 備份聊天記錄到PC
      先打開PC微信客戶端拧烦,將需要獲取的聊天記錄備份到PC上


      備份聊天記錄至電腦

      備份聊天記錄至電腦
    • 恢復(fù)聊天記錄至模擬器的微信app
      打開藍(lán)疊模擬器,安裝微信app钝计,然后登陸自己的賬號恋博,導(dǎo)入聊天記錄,這樣藍(lán)疊就有了完整的聊天記錄數(shù)據(jù)庫文件


      導(dǎo)入聊天記錄
  2. 打開模擬器root權(quán)限


    獲取Root權(quán)限私恬,這樣才能獲得上面三個信息
  1. 獲取數(shù)據(jù)庫文件EnMicroMsg.db
    • 打開文件管理器


      re.png
    • 數(shù)據(jù)庫的文件路徑


      數(shù)據(jù)庫就在這個都是數(shù)字的文件夾里

      數(shù)據(jù)庫文件
    • 復(fù)制數(shù)據(jù)庫到自己的PC


      藍(lán)疊模擬器中债沮,將文件復(fù)制到sdcard下,然后點擊上面的Export to Windows即可復(fù)制到自己的PC
  1. 獲取模擬的串號IMEI
    網(wǎng)上很多方法都不靠譜本鸣,最簡單有效的一招就是在模擬器上安裝獲取IMEI的app疫衩,打開這個app就能知道IMEI
  1. 獲取uin
    在這個文件下,好多文件里都會有uin荣德,例如下面這個文件闷煤,里面有個uin_id的8-10位數(shù)字童芹,記錄下來


    打開這個文件,能夠找到uin
  1. 計算密碼
    打開密碼計算小工具鲤拿,將IMEI和uin輸入左側(cè)方框假褪,中間不要有任何字符,中間選擇32位小近顷,右側(cè)得到結(jié)果的前七位就是密碼

    md5一定要小寫的才行

  2. 讀取數(shù)據(jù)庫的小工具
    有了數(shù)據(jù)庫和密碼生音,還需要安裝一個讀取數(shù)據(jù)庫的工具——sqlcipher.

  3. 導(dǎo)出聊天記錄
    用sqlcipher打開EnMicroMsg.db,會提示輸入密碼窒升,然后就能看到數(shù)據(jù)庫內(nèi)容


    導(dǎo)出聊天記錄

    表選擇message
  4. 導(dǎo)入excel久锥,導(dǎo)出xlsx
    上面生成的csv文件,如果直接用python讀取的話异剥,會有很多問題(可能是編碼格式的問題)瑟由,我是先用excel打開csv,另存為.xlsx文檔冤寿,這樣方便后面python讀取


數(shù)據(jù)分析

這一部分就不多講了歹苦,詞云是借用了詞云生成方法的代碼。聊天時間分布統(tǒng)計利用了pandas庫督怜,這個我也是第一次用殴瘦,拙劣的代碼如下

import datetime
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

excel_path = 'wx.xlsx' #上面第9步,生成的excel文件
dateparse = lambda x: datetime.datetime.fromtimestamp(int(x)/1000) if x else None # 導(dǎo)出來的時間戳比正常的多了3個0号杠,這點要注意
df = pd.read_excel(excel_path, parse_dates=['createTime'], date_parser=dateparse)
fc = df['content'].groupby(df['createTime'].dt.hour).count() # hour 表明按照小時 統(tǒng)計聊天頻率
fc.index = fc.index.astype('int') #將橫坐標(biāo)轉(zhuǎn)化為整數(shù)型

############  繪圖 ###################
plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標(biāo)簽
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負(fù)號
plt.rcParams['font.size']=23
plt.figure(figsize=(20, 10))
ax = fc.plot(kind='bar',color='#66cccc')
ax.set_facecolor('#eeeeee')
ax.grid(True, linestyle='-.')
ax.tick_params(axis='x',labelcolor='#66cccc', labelsize='large', width=3)
ax.tick_params(axis='y',labelcolor='#66cccc', labelsize='large', width=3)
ax.set_xlabel(u"小時",color='#66cccc')
ax.set_ylabel(u"微信消息個數(shù)",color='#66cccc')
ax.set_title(u'微信聊天數(shù)據(jù)統(tǒng)計',color='#66cccc')
plt.show()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蚪腋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子姨蟋,更是在濱河造成了極大的恐慌屉凯,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件眼溶,死亡現(xiàn)場離奇詭異悠砚,居然都是意外死亡,警方通過查閱死者的電腦和手機堂飞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門灌旧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人绰筛,你說我怎么就攤上這事枢泰。” “怎么了铝噩?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵衡蚂,是天一觀的道長。 經(jīng)常有香客問我,道長讳窟,這世上最難降的妖魔是什么让歼? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮丽啡,結(jié)果婚禮上谋右,老公的妹妹穿的比我還像新娘。我一直安慰自己补箍,他們只是感情好改执,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坑雅,像睡著了一般辈挂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上裹粤,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天终蒂,我揣著相機與錄音,去河邊找鬼遥诉。 笑死拇泣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的矮锈。 我是一名探鬼主播霉翔,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼苞笨!你這毒婦竟也來了债朵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤瀑凝,失蹤者是張志新(化名)和其女友劉穎序芦,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猜丹,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡芝加,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了射窒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡将塑,死狀恐怖脉顿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情点寥,我是刑警寧澤艾疟,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響蔽莱,放射性物質(zhì)發(fā)生泄漏弟疆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一盗冷、第九天 我趴在偏房一處隱蔽的房頂上張望怠苔。 院中可真熱鬧,春花似錦仪糖、人聲如沸柑司。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽攒驰。三九已至,卻和暖如春故爵,著一層夾襖步出監(jiān)牢的瞬間玻粪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工诬垂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留奶段,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓剥纷,卻偏偏與公主長得像痹籍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子晦鞋,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容