对于微信聊天记录,可以通过采集聊天记录,通过聊天数据生成词云两步实现

一、聊天记录数据采集

整个任务中最困难的即为聊天数据采集。由于QQ和微信的聊天记录提取难度不同,对于QQ聊天数据,简单的导出即可。对于微信聊天数据,微信将聊天数据保存在EnMicroMsg.db数据库中,通过MD5加密,所以我们通过获取db数据库中的文件,再对数据解密即可成功获取和某人的聊天记录啦。下面开始正式介绍如何采集聊天数据。

工具

  • 蓝叠模拟器(通过将微信数据由手机导入到电脑, 再将数据从电脑导入蓝叠模拟器)
  • sqlcipher.exe

1.数据由手机导入到模拟器中

蓝叠安卓模拟器官网

蓝叠模拟器图标如下,整个流程中最核心的工具

电脑微信左下角备份手机聊天记录至电脑

登录蓝叠模拟器下载微信app登录,该操作会顶掉手机微信, 但是要保持电脑微信登录(模拟器操作略卡耐心等待一下)

电脑微信左下角恢复电脑聊天至手机(模拟器)

2.获取数据库文件

按照图中操作获取模拟器Root权限

模拟器使用下图所述app对模拟器中文档进行处理

按照路径寻找到微信聊天记录所在文件位置,蓝框路径下存在两个数字字母结合的文件夹,数据存储在其中一个文件夹中, 找到EnMicroMsg.db,该数据库即为聊天记录

操作前先将聊天记录中非操作记录删除,再将数据由模拟器中导入至本地文件夹中,蓝叠模拟器可以访问电脑本地文件夹(长按数据库文件,再点击复制操作,跳转到我的形状文件夹下保存,即保存到本地文件夹下了)

可以聊天记录已经成功保存在本地文件夹下

3.数据库文件解密

由于db数据库经过MD5加密,因此对其解密即可成功获取数据

使用IMEI以及auth_uin即可通过MD5解密即可获取数据

IMEI由于未成功获取到,使用1234567890ABCDEF代替

auth_uin可以通过模拟器中数据文件获取到, 随便在xml文件下找到name = "auth_uin"对应的value值即可

通过MD5解密,使用IMEI + auth_uin, 使用32位(小)解密,前7位即为数据库密码

MD5在线加密/解密/破解—MD5在线 (sojson.com)

使用 sqlcipher工具来加载SQLite数据

下载路径:SQLCipher - Zetetic

即可成功获取数据, File - Export - CSV文件格式即可,至此,我们终于成功获取聊天数据, 一番操作终于拿到了数据就可以尽情发挥了,接下来写一个python脚本生成一个词云图片就大功告成了

二、通过数据生成词云

获取停用词表之后,再通过代码即可跑出来词云图片

#-*- coding : utf-8 -*-
# coding:unicode_escapeimport re
import jieba
import wordcloud
import pandas as pddata = pd.read_csv('my_data.csv', encoding='gbk')
data = data[['status','content']]#我发出的数据
data_me = data[data['status'] == 2]
#我接受到的数据
data_other = data[data['status'] == 4]print(len(data_me))
print(len(data_other))stop_words = []
with open('stop_words.txt', 'r', encoding='utf-8') as f:lines = f.readlines()for mes in lines:stop_words.append(mes[:-1])str_me = ''
str_other = ''for index in data_me.index:mes = data.loc[index]['content']if mes != '' and 'wxid' not in mes and '<' not in mes and '[' not in mes:str_me += mesfor index in data_other.index:mes = data.loc[index]['content']if mes != '' and 'wxid' not in mes and '<' not in mes and '[' not in mes:str_other += mes#jieba分词
jieba_me = jieba.lcut(str_me)
ls_me = []
for item in jieba_me:if item not in stop_words and len(item) >= 2:ls_me.append(item)jieba_other = jieba.lcut(str_other)
ls_other = []
for item in jieba_other:if item not in stop_words and len(item) >= 2:ls_other.append(item)txt_other = " ".join(ls_other)
txt_me = " ".join(ls_other)
txt_all = txt_other + ' ' + txt_me#保存词云照片
w = wordcloud.WordCloud( font_path = "msyh.ttc", width = 1000, height = 700, background_color = 'white', max_words = 300)
w.generate(txt_other)
w.to_file('other.png')
w.generate(txt_me)
w.to_file('me.png')
w.generate(txt_all)
w.to_file('all.png')

最终,大功告成!

参考:

利用python分析微信聊天记录

微信聊天记录统计

通过微信聊天记录生成词云相关推荐

  1. 微信聊天记录的词云制作

    微信聊天记录的词云制作 需求 导出微信聊天记录 提取文字聊天记录 生成词云 需求 想把跟朋友的微信聊天记录做个词云 导出微信聊天记录 我的手机是iphone,用旧版的itunes备份手机全部信息 it ...

  2. 情人节礼物------用她的照片和我们的聊天记录生成词云~

    用到的知识点 python读写文件 python正则表达式过滤无用信息 jieba分词与自定义字典 停用词筛选.统计词频 调用wordcloud绘制词云 第一步 从电脑版蛐蛐导出聊天记录.(手机一般不 ...

  3. 【微信聊天记录制作词云】超详细保姆级教学!!!(详细步骤+代码)

    简介 还在因各种情侣节日不知道送对方什么礼物而感到苦恼吗?不如试试这个超浪漫的微信聊天词云! 整体思路主要为: 1. 利用模拟器找到备份文件 2. 解密文件并导出文本文件 3. 代码制作词云 前期准备 ...

  4. 导出微信聊天记录,使用python进行分词,生成词云

    导出微信聊天记录,使用python进行分词,生成词云 导出微信聊天记录,使用python进行分词,生成词云 备份数据 浏览.导出数据 查看数据 操作数据库,分析生成词云 下载全部文件 导出微信聊天记录 ...

  5. 谁说程序员不浪漫?Python导出微信聊天记录生成爱的词云图

    明天又双叒叕是一年一度的七夕恋爱节了! 又是一波绝好的机会!恩爱秀起来! 购物车清空!礼物送起来!朋友圈晒起来! 需要Python软件工具和学习资料的小伙伴可以点击下方链接自行获取 http://no ...

  6. 【趣味案例】谁说程序员不浪漫?Python导出微信聊天记录生成爱的词云图

    说到词云应该不陌生,不知道的童靴往下看 词云,就是把网络文本中出现频率较高的 "关键词"予以视觉上的突出 浏览者只要一眼扫过文本就可以领略其主旨 瞧 这是不是一个有声音.有画面的小 ...

  7. python制作中文词云_Python如何生成词云(详解)

    前言 今天教大家用wrodcloud模块来生成词云,我读取了一篇小说并生成了词云,先看一下效果图: 效果图一: 效果图二: 根据效果图分析的还是比较准确的,小说中的主人公就是"程理" ...

  8. python生成文章标题_利用简书首页文章标题数据生成词云

    原标题:利用简书首页文章标题数据生成词云 感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答.求职一站式搞定! ...

  9. Java生成词云!你喜欢得书都在图里!

    在做数据分析得时候,生成词云图是很常见得需求,正常情况下大部分都是通过python去采集数据并且生成,异常强大,本文来说说java如何生成词云! 在github上找轮子得时候,发现了这么一个项目:Ku ...

  10. 用Python爬取豆瓣首页所有电影名称、每部电影影评及生成词云

    1.爬取环境: window 7 Chrome 浏览器 注册豆瓣.注册超级鹰 2.安装第三方库:安装第三方库: 主程序用到的库有 import sys, time import pytesseract ...

最新文章

  1. 【转】Asp.net控件开发学习笔记整理篇 - Asp.net客户端状态管理
  2. 交管12123显示当前环境存在风险_政策|取消驾驶证年龄上限、推行异地通办,12项交管新政来了...
  3. 网站SEO优化中长尾关键词的特征有哪些?
  4. JSONProxy - 获取跨域json数据工具
  5. 基于Html5的移动端开发框架的研究
  6. 因子和(类素数筛选法)
  7. J2ME手机游戏引擎程序结构简述
  8. 【Markdown/typora】程序员写博客2分钟简单入门
  9. API 安全成企业考虑的第一要务
  10. 2021软件设计师硬核备考资料(2015-2020真题+答案+相关复习视频)
  11. 微信打飞机--Java版
  12. Windows移动热点服务
  13. 计算机缓存怎样更改,计算机的缓存大小在哪设置?
  14. python爬取bilibili数据_用 Python 抓取 bilibili 弹幕并分析!
  15. 校外使用校园网访问外网
  16. 网站漏洞整改报告公司之攻防方案
  17. 研究生计算机方面有哪些专业,计算机类研究生有哪些专业?
  18. 产品经理的5分钟统计课:产品/用户/数据平均情况是怎样?
  19. 扇贝python_【扇贝批量添加单词到词库】利用python调用扇贝API (oauth2)
  20. 办公技巧:如何快速提取办公文档里面的所有图片

热门文章

  1. javascript学习笔记最全
  2. RK3566-LPDDR4-EVB EDP屏幕调试
  3. 华为android7.0 root,华为荣耀畅玩6X EMUI5.0 7.0 root教程 荣耀6X获取7.0的root权限
  4. hp笔记本如何看序列号
  5. 通过Adobe Scout深入理解Flash播放器
  6. 沪江swf文件怎么打开_沪江课件播放器swf player_flash swf播放器_沪江swf播放器播放不了...
  7. smb协议只能在同一网段吗_基于SMB协议的共享文件读写 博客分类: Java
  8. 电商后台管理系统——商品管理
  9. 四元数、欧拉角及方向余弦矩阵的相互转换公式
  10. Python中pyserial库