微信聊天记录生成词云图(等日后有机会补充完整)

时间:2024-01-30 19:33:14

我用的是华为,所以下面的教程是用华为手机做的示例 

其他安卓手机免root教程网址:https://www.louyue.com/android-weixin.htm

ios系统的可参考这篇文章:https://zhuanlan.zhihu.com/p/56624686

1、导出手机里的微信备份文件

(1)卸载手机的备份软件(设置>>>应用和通知>>>应用管理>>备份>>卸载),重新下载8.0版本的“备份”

8.0版本的备份下载链接:https://www.louyue.com/down/huaweibeifen8.0.apk

(2)关掉无线网(要不然会自动更新到最新的版本),打开备份软件,点击“备份”,“内部存储>>下一步”,再点击“应用”(并非勾选“应用”)。

 

 

(3)在弹出的应用列表中勾选上“微信”并点击“开始备份”按钮,然后在弹出的设置密码界面直接点击“跳过”按钮。

 

 

(4)备份结束后,接下来将华为手机连接到电脑上,进入手机盘符下的“Huawei/Backup/backupFiles/备份时间”文件夹,可看到刚才备份下来的com.tencent.mm.db文件,将其复制并粘贴到电脑上任意目录下。

2、提取微信数据库文件

(1)在电脑上安装并运行楼月安卓手机备份文件提取器(点击此处下载),备份文件设置为刚才复制到电脑上的com.tencent.mm.db文件,然后设置一个输出目录(即提取的文件保存到的目录),最后点击“开始提取”按钮,并耐心等待其提取结束。

(2)提取得文件自动生成一个data文件夹,在文件夹中(data\data\com.tencent.mm\MicroMsg\414a7fad79697cb585645b12fad6ba23【后面这串乱码应该是微信账号】)找到enmicromsg.db文件,这个就是微信聊天记录的数据库啦,把他复制到一个方便操作的位置

 3、找数据库密码

数据库拷贝到电脑后是加密的,需要提供key来打开数据库。

key=IMEI(手机序列号)+UIN(用户信息号)

(1)IMEI的找寻,在手机拨号界面输入*#06#即可找到IMEI。

(2)微信UIN的获取

登录网页版的微信,随便给谁发一条消息,查看开发者模式(chrome直接F12即可)中network的请求参数,一般都会包含这个UIN, 

(3)通过MD5计算出自己的密码,网址https://md5jiami.51240.com/,输入刚刚的key,取32位小写前七位

4、下载能打开微信数据库的软件

下载打开数据库的工具sqlcipher,下载地址https://pan.baidu.com/s/1dDBa4FZ,直接下载可用,双击sqlcipher.exe

5、利用工具打开数据库并导出csv文件

  (1) file >> open data base >> 选择第五步的enmicromsg.db文件 >> 输入6(3)获取的密码  >> 打开数据库

 

(2)查询和某人的所有聊天记录(××××处填入对方的昵称)

select datetime(subStr(cast(m.createTime as text),1,10),\'unixepoch\',\'localtime\') as theTime,
case m.isSend 
when 0 then r.nickname 
when 1 then \'\'end as person,m.content 
from message 
m inner join rcontact r on m.talker = r.username 
where m.type=1 and r.nickname = \'××××\' 

(3)把上面的结果加入到另外一张新表上,方便导出csv(暂时没发现这里有视图功能,只能用这种办法折中一下)

【1】新建一张wxcontent表: edit >> create table

   一共有三个字段分别为:theTime(text类型),person(text类型),content(blob类型)  

【2】通过sql语句给这张表增加想要的数据

(添加数据的sql语句)

insert into wxcontent 
select datetime(subStr(cast(m.createTime as text),1,10),\'unixepoch\',\'localtime\') as theTime,
case m.isSend 
when 0 then r.nickname 
when 1 then \'\'end as person,m.content 
from message 
m inner join rcontact r on m.talker = r.username 
where m.type=1 and r.nickname = \'××××\' 

 【3】检查一下wxcontent表是否有数据

 

【4】把表中数据导出到csv文件中:file >> export >> table as csv file >> 选择wxcontent表 >> export

6、至此,微信聊天记录就按照我们的想法导出来了

7、下面生成好看的词云

法一:

运用在线网站(网站选取可参考文章:https://zhuanlan.zhihu.com/p/69066085

我用的是https://wordart.com/create ,国外网站,免费,生成的图片没有水印

使用方法:

(1)用excel打开第十步导出的csv文件,复制content列

(2)打开网站,点击words  >> import

   数据导入完成后会按照词频排列,词频越高,越在上面

 

 (3)导入一个中文字体(网站是没有中文字体的哈)

   可以在电脑里面复制一个ttf文件(windows可以打开控制面板,搜索fonts),复制一个到一个可操作的位置(桌面即可)

   然后去网站上,add font即可

(4)shapes是选择形状(其他功能可以自己探索下),然后点击visualize,生成图片

 (5)微信聊天的词云图就生成好啦