利用python做微信聊天记录词云分析——记录美好回忆

本文详细介绍了如何利用Python对安卓和iOS设备的微信聊天记录进行词云分析。首先,通过Root Explorer或iTunes备份导出聊天数据,解密安卓的EnMicroMsg.db文件。接着,筛选目标好友聊天记录,建立数据库。最后,使用jieba分词和WordCloud库生成词云,展现高频词汇。整个过程旨在帮助Python初学者轻松进行词云分析。
摘要由CSDN通过智能技术生成

目录

1 概述
2 数据准备
2.1 安卓设备
2.1.1 Root手机,安装Root Explorer
2.1.2 用Root Explorer将聊天记录的数据文件导出并存入电脑
2.1.3 对EnMicroMsg.db进行解密
2.1.4 数据库表的分析和提取
2.1.5 建立message数据库

2.2 ios设备
2.2.1 备份手机记录到电脑
2.2.2 数据库结构
2.2.3 关于加密

3 目标好友聊天记录筛选
3.1 安卓
3.2 ios版本
4 制作词云
4.1 准备相关依赖包
4.1.1 jieba安装
4.1.2 WordCloud安装

4.2 调用相关包
4.3 导入聊天记录筛选.txt,用分词包进行切词
4.4 去停用词
4.5 统计频率并排序
4.6 画词云图
5 总结

1 概述

python的词云分析功能很是强大,不少网友早已提出众多利用python对聊天记录进行词云分析的方法。但是在实践过程中,有许多的bug和不太切合实际的地方,本文对目前网上已有的方法进行总结,并结合自己在实际操作中遇到的一些问题,给出一篇较为详细的步骤分解,让刚刚学习python的小白,也可以快速上手,体验python的强大和乐趣~

2 数据准备

要对微信聊天记录进行分析,必须将记录从手机或者电脑导出。
网上也有不少软件据说可以直接导出聊天记录,但大多都是收费的~
我们借鉴众多机智网友的做法自力更生(没钱买软件)

2.1 安卓设备

原文链接:https://www.zhihu.com/question/19924224/answer/69982884
本部分感谢知乎大神“画头像的dada”

2.1.1 Root你的手机,安装Root Explorer。

不同的手机root办法不同,依据自己的手机型号自行百度。
Root Explorer在任何一个安卓市场都可以下载,请自行下载并安装。

2.1.2用Root Explorer将聊天记录的数据文件导出并存入电脑

利用Root Explorer,打开以下路径:
路径:/data/data/com.tencent.mm/MicroMsg/一大串字符命名的长文件夹
并在该文件夹下找到EnMicroMsg.db文件
你的手机登录过几个微信号,就有几个这样的“一大串字符命名的长文件夹”,要是分不清楚哪个是自己,可以选择都复制。
把数据库文件EnMicroMsg.db拷贝到手机根目录,链接数据线,将其拷贝到电脑。

EnMicroMsg.db是一个sqlite3的数据库文件,Python内置了SQLite3,所以,在Python中使用import sqlite3可以直接调用sqlite3,并利用sql语句实现查询功能。但是EnMicroMsg.db是一个加密数据库,需要进行解密,才能操作,目前尚未找到直接通过python进行解密的手法,所以还需要一个解密过程。

2.1.3 对EnMicroMsg.db进行解密

微信对于用户的聊天记录还是有保护的,不是谁拿到数据文件都能看的,要进行解密。

钥匙 KEY = IMEI (手机序列号) + UIN(用户信息号)

手机输入 *#06# 能得到IMEI

利用Root Explorer访问/data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml文件,并将其复制到电脑,用记事本打开,uin在最下面文本处,为11位数字,或者10位数字加一个符号,差多如下图,value值所指就是。
红框里为uin,感谢知乎大神
把IMEI (手机序列号) 和 UIN(用户信息号)连起来写成一串,计算其MD5值,免费MD5散列计算器

对计算结果取前7位为数据库密码
MD5计算
至此,数据库的密码拿到了,就可以进行数据提取了。

感谢网友提供的解密sqlite3数据库神器,sqlcipher。下载地址:百度网盘
sqlcipher
点击File,OpenDatabase,选择刚才的EnMicroMsg.db文件,出现弹框,输入刚才拿到的7位密码,就能进入数据库。

2.1.4数据库表的分析和提取

数据库中chatroom表包含了所有群的相关信息,而rcontact表中包含了所有联系人的信息(包括好友和非好友)。如下图:
在这里插入图片描述
我们需要通过rcontact表来找到想要分析的聊天对象的username,以便于找到对应的聊天内容。下图中,昵称为“文件传输助手”的username是filehelper。
在这里插入图片描述
然后我们找到一个名为message的表,里边记录了所有的聊天记录。createtime是信息创建时间,talker是聊天者,用上一步提到的username来标识,而content就是聊天内容了。
在这里插入图片描述
虽然sqlcipher提供sql语句查询功能,但是,查询出来的数据并不能导出,所以,通过文件导出功能,将message表整体导出,再通过python进行筛选查询。我们将表message储存为csv格式。命名为“聊天记录.csv”
在这里插入图片描述
有可能这个csv文件会有上百兆,如果用excel打开,会非常卡,无法对目标talker筛选,从而找到目标聊天记录内容。

通过tableau进行文本数据源的导入,进行筛选也是一个不错的选择,本文不做详述。

2.1.5 建立message数据库

为了快捷简便的对message表进行筛选,找到与目标talker的聊天内容,我们将上一步导出的csv文件导入到一个新建的sqlite3数据库中。用sql语句进行筛选。

利用pandas,将csv导入新建的“聊天记录.db”数据库。

代码如下(会自动创建“聊天记录.db”文件):

import pandas
import csv, sqlite3
conn= sqlite3.connect
  • 22
    点赞
  • 144
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值