利用python分析微信聊天记录
文章目录
- 前言
- 一、任务分析
- 二、工具
- 三、步骤
- 1.数据获取
- 获取DB
- 计算密码
- 导出数据库
- 2. 数据清洗(具体方法以后补充)
- 3. 数据分析
前言
昨天跟女朋友讨论谁给对方发的消息比较多,两人各执一词,事实证明是我输了^
一、任务分析
统计微信聊天记录分为三步——数据获取、数据清洗和数据分析。下面大致说一下各部分需要做什么。
三步中最难的就是数据获取。与QQ不同,微信并不提供导出聊天记录的工具,所以得去自己获取。微信将聊天记录存在一个名为 EnMicroMsg.db 的数据库里,很不幸是这个数据库是加密的,但幸运的是它的密码是可以计算出来的!因此我们首先需要获取这个db文件,再对它进行解密和导出,这样数据获取部分就大功告成啦!(是不是听起来很简单哈哈哈)
后面两步就比较简单了,无非就是筛一下记录,再用python分析。
二、工具
BlueStack蓝叠
SQLCipher
Python
三、步骤
1.数据获取
由前面的分析可知,我们需要获取 EnMicroMsg.db 这个数据库文件和它的密码,如果手机没有Root过的话,需要借助模拟器,我在这里用的是BlueStack。
获取DB
- 将手机上的聊天记录备份到PC
pc端微信左下角的三条杠->备份与恢复->备份聊天记录至电脑
按照提示备份即可
- 将刚备份的聊天记录恢复至模拟器
在模拟器上安装微信,并在PC上依此点击左下角的三条杠->备份与恢复->恢复聊天记录至手机。
依然按照提示恢复,这样我们就将原手机上的聊天记录迁移到了模拟器上。
-获取数据库文件
a. 首先获取模拟器的root权限
右上角向下的箭头 -> 设置 -> 引擎设置,勾选获取root权限
b.找到数据库文件存放的路径
在这个路径下有两个数字和字母命名的文件夹,其中有一个就存放着我们需要的 EnMicroMsg.db 。
鼠标长按,点击右上角复制图标,即可复制
c.将数据库复制到PC
蓝叠上也可以更改pc上的文件夹,因此直接将数据库文件复制到以上路径中。因为我是复制到了Document这个文件夹中,对应我电脑上的文档,打开就可以看到我们的数据库文件啦!
计算密码
根据前面的分析,我们现在还需要计算出数据库的密码,而这个密码是将机器的IMEI和auth_uin经过md5加密而来的。
a.获取IMEI
在蓝叠上下载一个小工具
打开后,点击分析器,再点击我的IMEI,就会将IMEI自动填充到输入框里,我们将它记录下来。
b.获取auth_uin
打开路径如上,在上面的文件夹中,好多文件里都会有auth_uin,比如上面指出来的那个文件中就有,把它记录下来。
c.计算密码
这样,我们就获取了计算密码的两大法器——IMEI和auth_id,我们利用MD5在线加密工具,将IMEI和auth_id输到左侧方框,中间不要有字符,加密方式选择32位小。
加密出来的前7位就是这个数据库的密码了,大功告成!
导出数据库
使用SQLCipher导出数据库,我在网上找了好久都不靠谱,之后会上传一个可以用的(也可以自己找)。
打开 EnMicroMsg.db ,会提示我们输入密码,将刚刚获取到的密码输入,就可以解开啦
找到message数据库并导出
这样就得到了全部的数据!
2. 数据清洗(具体方法以后补充)
1.要将时间戳转换为北京时间
2.处理图片和链接等非文字聊天记录
…
3. 数据分析
目前仅统计了两人的消息数量和做了一个简单的词云:
消息数量(啊,是我输了呜呜):
词云:
代码:
from os import path
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud, STOPWORDS# 当前文件路径
d = path.dirname('__file__')
# Read the whole text
file = open(path.join(d, 'message.txt'), encoding='utf-8').read()
# 进行分词
punc = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ<>0123456789\/"
temp = []
for c in file:if c not in punc:temp.append(c)
newText = ''.join(temp)default_mode =jieba.cut(newText)
text = " ".join(default_mode)
alice_mask = np.array(Image.open(path.join(d, "2.jpg")))
stopwords = set(STOPWORDS)
stopwords.add("said")
wc = WordCloud( #设置字体,不指定就会出现乱码,这个字体文件需要下载font_path=r'D:\study\tools\WenQuanWeiMiHei\WenQuanWeiMiHei-1.ttf', background_color="white", max_words=200, mask=alice_mask, stopwords=stopwords)
# generate word cloud
wc.generate(text)# store to file
wc.to_file(path.join(d, "qq_result.jpg"))# show
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.figure()
plt.imshow(alice_mask, cmap=plt.cm.gray, interpolation='bilinear')
plt.axis("off")
plt.show()
参考教程: https://www.jianshu.com/p/3065087ea1b0
利用python分析微信聊天记录相关推荐
- 利用python做微信聊天记录词云分析——记录美好回忆
目录 1 概述 2 数据准备 2.1 安卓设备 2.1.1 Root手机,安装Root Explorer 2.1.2 用Root Explorer将聊天记录的数据文件导出并存入电脑 2.1.3 对En ...
- chatgpt赋能python:Python实现微信聊天记录的方法
Python实现微信聊天记录的方法 随着移动互联网的普及,微信已经成为了人们最为常用的交流工具之一.然而,有时候我们需要将微信聊天记录保存下来,观察和分析聊天数据,寻找有价值的信息.本文将介绍使用Py ...
- 利用python进行微信好友分析
欢迎python爱好者加入:学习交流群 667279387 本文主要利用python对个人微信好友进行分析并把结果输出到一个html文档当中,主要用到的python包为itchat,pandas,py ...
- chatgpt赋能python:Python处理微信聊天记录
Python处理微信聊天记录 微信是现代社交生活中不可或缺的一部分,而聊天记录是记录日常交流的重要依据之一.许多人会想要进一步了解.分析或备份他们的微信聊天记录.在这篇文章中,我们将介绍如何使用Pyt ...
- 利用Python分析航空公司客户价值
利用Python分析航空公司客户价值 一.背景介绍 随着社会生活中数据量的急剧增多,如何从这些海量的数据中提取与发掘出对我们决策有用的信息成为当前亟待解决的题,因此,数据分析与挖掘技术在这些年得到 ...
- python头像右上角加红色数字_利用python实现微信头像加红色数字功能
通过Python实现将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果 实现过程: 准备两张图片如下: 使用PIL图像处理库,导入moudle ...
- 用python做头像_如何利用python制作微信好友头像照片墙?
这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...
- 利用Python分析《庆余年》人物图谱和微博传播路径
利用Python分析<庆余年>人物图谱和微博传播路径 庆余年电视剧终于在前两天上了,这两天赶紧爬取微博数据看一下它的表现. 庆余年 <庆余年>是作家猫腻的小说.这部从2007年 ...
- 利用Python制作微信机器人(三)实现爬取JD商品价格
从前两篇的博客来看,目前已经实现了机器人单向给微信发消息,和与机器人进行交互式发消息,详情如下: 利用Python制作微信机器人(一)机器人单向发消息 利用Python制作微信机器人(二)与机器人进行 ...
- 利用Python制作微信跳一跳外挂,微信好友装逼神器!
导语 前几天在GitHub上看到有人利用Python玩一款名为"跳一跳"的微信小程序,于是打算自己也来试一试,进群:711944363 获取微信跳一跳源码! 演示工具 电脑系统:W ...
最新文章
- 简介+原理+绘制,详解 Python「瀑布图」的整个制作流程!
- 大话 SPA router
- vue实现点击后多级标题联动变化
- 2020未来科学大奖公布,砒霜治疗白血病发现者张亭栋、王振义获生命科学奖,最年长者96岁...
- 从头开始安装Ubuntu,cuda,cudnn,caffe,tensorflow,ROS
- Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法
- 机房配电柜、机柜线缆施工标准做法及线缆入柜方式
- 把数据导出Excel
- 央视新闻联合百度智能云打造的首个“冬奥AI手语主播”来了
- android刷新时的圆形动画_Android动画篇(一):圆形进度条CircleProgressBar
- python 导入自己写的类_Python3.7模块的定义、导入、优化操作图文完全详解,附视频教程...
- 一篇文章带你认识数学建模中的数据拟合
- 【愚公系列】2021年12月 攻防世界-简单题-CRYPTO-005(Railfence)
- uniapp实现上传图片
- eclipse下载完成了但是打不开
- java 逃逸_Java 逃逸分析
- HTML DOM中的根节点是______,HTML DOM 学习
- 考研备考建议篇——论文怎么投稿
- 【流媒体|从入门到出家】:流媒体协议—HTTP
- 排列组合和二项式定理