在开始之前, 先简单说下我为何会写这篇文章?
为了开发新客户, 领导安排公司的客服们加入了很多的微信群, 在群内收集目标客户的联系方式.
然而她们收集客户信息的方式非常的原始: 在微信群内翻看群聊记录 -> 寻找客户发出的电话号码 -> 复制 -> 打开公司内部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: 前几天跟风, 用闲置服务器搭建了一个博客小碎银, 来瞅一眼吧