在開始之前, 先簡單說下我為何會寫這篇文章?
為了開發新客戶, 領導安排公司的客服們加入了很多的微信群, 在群內收集目標客戶的聯系方式.
然而她們收集客戶信息的方式非常的原始: 在微信群內翻看群聊記錄 -> 尋找客戶發出的電話號碼 -> 復制 -> 打開公司內部APP -> 填寫表單 -> 粘貼客戶電話號碼 -> 提交 -> 繼續翻看群聊記錄.
如此這般循環往復. 效率低且枯燥.
我覺得客服小姐姐們, 肯定是很不樂意做這項工作的.
所以我向領導提議, 用代碼來實現這個工作.
目前, 上面的這個流程我已經用代碼實現了, 為了記錄實現的過程, 就有了這篇文章.
希望對遇到類似需求的您, 能夠有所幫助.
本文目錄
- 介紹需要用到的工具
- 備份手機資料並導出微信聊天記錄數據
- 使用DB Browser查看微信聊天數據
- 用Python讀取聊天數據
- 總結
1. 需要用到的工具
俗話說, 工欲善其事, 必先利其器. 合適的工具, 往往能夠事半功倍.
這里用到的工具有:
名稱 | 備注 |
---|---|
iPhone手機 | 抱歉, 我沒有安卓手機, 所有沒有在安卓機上進行測試 |
iTunes軟件 | 用來備份iPhone手機數據, 備份時, 一定要選擇"不加密"備份, 否則數據無法讀取 |
iPhone Backup Extractor | 用來導出微信數據庫, 雖然是收費軟件, 但是其免費的功能在這里已經夠用了 |
DB Browser for SQLite | 免費的數據庫可視化軟件, 用來查看sqlite數據庫 |
Python 3.7 | os , sqlite3 , re , pymysql , emoji |
2. 備份手機資料並導出微信聊天記錄數據
2.1 備份手機資料到iTunes
用數據線把iPhone連接至電腦, 打開iTunes進行備份.
不要勾選"加密備份"
2.2 導出聊天記錄數據
這一步需要借助一個軟件iPhone Backup Extractor.
這個軟件雖然收費, 但是其免費功能對我們來說已經夠用了.
打開這個軟件, 可以看到如下界面:
通過上圖可以看到:
左側是已經備份的iPhone手機列表
右側選擇expert mode
, 稍等一會兒之后, 就會看到軟件右側區域顯示了備份文件的目錄結構.
那么, 我們需要備份的文件是什么?在哪里呢?
我們需要導出的文件是: MM.sqlite
, WCDB_Contact.sqlite
其中 MM.sqlite
是存放微信聊天內容相關的數據, WCDB_Contact.sqlite
是微信聯系人相關的數據.
文件路徑是: Applications/com.tencent.xin/微信名稱MD5/DB/
按照圖片的標注, 選中這兩個文件, 然后點擊Extract selected
按鈕, 進行文件的導出.
免費版的軟件, 在導出文件之前, 需要等待10s.
文件導出的速度很快, 幾乎不用等待.這個時候打開桌面, 就可以看到導出后的文件了.
3. 使用DB Browser查看微信聊天數據
首先安裝數據庫可視化工具DB Browser for SQLite, 點擊下載
打開這個軟件, 點擊打開數據庫
選中導出后的文件MM.sqlite
:
打開文件之后, 點擊瀏覽數據, 然后在下拉框里可以快速切換不同的表.
其中, 以Chat開頭的表, 就是存放聊天記錄的表. Message
字段就是聊天內容.
接着, 我們再打開另外一個文件WCDB_Contact.sqlite
:
切換到Friend這張表, 可以看到如下字段.
其中, dbContactRemark
字段應該就是聯系人的備注;
userName
就是聯系人的微信名稱, 其中名稱帶有@chatroom的, 表示這是一個微信群聊;
好了, 現在我們已經找到了微信聊天記錄, 也找到了微信聯系人, 就可以開始用Python進行處理了.
4. 用Python讀取聊天記錄內容
實現過程很簡單, 我看了自己的代碼, 總共不到100行, 所以代碼就不貼出來了, 因為寫的很爛 - . -
只簡單說下思路吧.
- 連接這兩個導出的數據庫.
- 循環遍歷其中的表.
- 遍歷每一條聊天內容,並用正則表達式匹配其中的電話號碼.
- 如果該條聊天記錄存在電話號碼,則寫入自己的數據庫. 寫入的字段有 電話號碼, 微信昵稱, 聊天內容, 發送時間
大概就是以上這些.
5. 總結
整個過程的實現還是比較快的, 大概花了半個工作日.
代碼雖然簡單, 卻實實在在給公司節省了不少的人力成本, 還是蠻有成就感的.
我自己的體會: 要多觀察周圍的生活, 找到其中重復勞作的部分, 並用程序去優化, 可能這就是做程序員的樂趣所在.
6. 個人博客
ps: 前幾天跟風, 用閑置服務器搭建了一個博客小碎銀, 來瞅一眼吧😁