2024年Python 情人节超强技能 导出微信聊天记录生成词云(2)

本文介绍了如何使用Python和Android模拟器,避开复杂备份流程,轻松提取微信聊天数据,包括使用SQLite数据库、MD5密码计算、jieba分词等步骤,为读者提供了一种简单易行的数据采集解决方案。
摘要由CSDN通过智能技术生成

作者: Python实用宝典

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

在这里插入图片描述

在这里插入图片描述

瞧 这是不是一个有声音、有画面的小爱心~

今天 我们采集情侣们之间的聊天日常

用此制作一份只属于你们的小浪漫!

第一步,我们需要导出自己和对象的数据~


微信的备份功能并不能直接给你导出文本格式,它导出来其实是一种叫sqlite的数据库。如果说用网上流传的方法提取文本数据,iOS则需要下载itunes备份整机,安卓则需要本机的root权限,无论是哪种都非常麻烦,在这里给大家介绍一种不需要整机备份和本机root权限,只导出和对象的聊天数据的方法。

那就是使用安卓模拟器导出,这样既能ios/安卓通用,又能够避免对本机造成不良影响,首先需要用电脑版的微信备份你和你对象的聊天记录。以windows系统为例:

  1. 下载夜神模拟器

  2. 在夜神模拟器中下载微信

  3. 使用windows客户端版的微信进行备份,如图左下角

在这里插入图片描述

  1. 点击备份聊天记录至电脑

在这里插入图片描述

  1. 手机端选择备份的对象

点击进入下方的选择聊天记录,然后选择和你对象的记录就可以啦

在这里插入图片描述

在这里插入图片描述

6. 导出完毕后打开模拟器,登录模拟器的微信

在这里插入图片描述

7. 登录成功后返回电脑版微信登录,打开备份与恢复,选择恢复聊天记录到手机

在这里插入图片描述

在这里插入图片描述

8. 勾选我们刚刚导出的聊天记录,并在手机上点击开始恢复

在这里插入图片描述

9. 打开夜神模拟器的root权限

在这里插入图片描述

10. 用模拟器的浏览器百度搜索RE文件管理器,下载(图一)安装后打开,会弹出对话框让你给予root权限,选择永久给予,打开RE文件管理器(图二),进入以下文件夹(图三), 这是应用存放数据的地方。

/data/data/com.tencent.mm/MicroMsg

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

然后进入一个由数字和字母组合而成的文件夹,如上 图三 的 4262333387ddefc95fee35aa68003cc5

  1. 找到该文件夹下的EnMicroMsg.db文件,将其复制到夜神模拟器的共享文件夹(图四)。共享文件夹的位置为 /mnt/shell/emulated/0/others ( 图五 ),现在访问windows的 C:\Users\你的用户名\Nox_share\OtherShare 获取该数据库文件( EnMicroMsg.db )

在这里插入图片描述

在这里插入图片描述

  1. 导出该数据库后,使用一款叫 sqlcipher 的软件读取数据

将该字符串进行MD5计算后的前七位便是该数据库的密码,如 “355757010761231 857456862” 实际上中间没有空格,然后放入MD5计算取前面七位数字,后续会详细介绍。

哇,真是“简单易懂”啊,没关系,接下来告诉大家IMEI和UIN怎么获得。

首先是IMEI,在模拟器右上角的系统设置 —— 属性设置里就可以找得到啦,如图所示。

在这里插入图片描述

现在我们获得了IMEI号,那UIN号呢?

同样地,用RE文件管理器打开这个文件

在这里插入图片描述

长按改文件,点击右上角的三个点—选择打开方式—文本浏览器,找到default_uin,后面的数字就是了 !

在这里插入图片描述

得到这两串数字后,就可以开始计算密码啦,如果我的IMEI是355757010762041,Uin是857749862,那么合起来就是355757010762041857749862,将这串数字放入免费MD5在线计算

得到的数字的前七位就是我们的密码了,像这一串就是 6782538.

然后我们就可以进入我们的核心环节:使用 sqlcipher 导出聊天文本数据!

在这里插入图片描述

点击 File - open database - 选择我们刚刚的数据库文件,会弹出框框让你输入密码,我们输入刚刚得到的七位密码,就可以进入到数据库了,选择message表格,这就是你与你的对象的聊天记录!

在这里插入图片描述

我们可以将它导出成csv文件:File - export - table as csv.

接下来,我们将使用Python代码,将里面真正的聊天内容:content信息提取出来,如下所示。虽然这个软件也允许select,但是它select后不允许导出,非常不好用,因此还不如我们自己写一个:

import pandas

import csv, sqlite3

conn= sqlite3.connect(‘chat_log.db’)

新建数据库为 chat_log.db

df = pandas.read_csv(‘chat_logs.csv’, sep=“,”)

读取我们上一步提取出来的csv文件,这里要改成你自己的文件名

df.to_sql(‘my_chat’, conn, if_exists=‘append’, index=False)

存入my_chat表中

conn = sqlite3.connect(‘chat_log.db’)

连接数据库

cursor = conn.cursor()

获得游标

cursor.execute(‘select content from my_chat where length(content)<30’)

将content长度限定30以下,因为content中有时候会有微信发过来的东西

value=cursor.fetchall()

fetchall返回筛选结果

data=open(“聊天记录.txt”,‘w+’,encoding=‘utf-8’)

for i in value:

data.write(i[0]+‘\n’)

将筛选结果写入 聊天记录.txt

data.close()

cursor.close()

conn.close()

关闭连接

记得把csv文件的编码格式转换成utf-8哦,不然可能会运行不下去:

在这里插入图片描述

第二步,根据第一步得到的聊天数据生成词云


. 导入我们的聊天记录,并对每一行进行分词

聊天记录是一行一行的句子,我们需要使用分词工具把这一行行句子分解成由词语组成的数组,这时候我们就需要用到结巴分词了。

分词后我们还需要去除词语里一些语气词、标点符号等等(停用词),然后还要自定义一些词典,比如说你们之间恩恩爱爱的话,一般结巴分词是无法识别出来的,需要你自行定义,比如说:小傻瓜别感冒了,一般分词结果是

小/傻瓜/别/感冒/了

如果你把“小傻瓜”加入到自定义词典里(我们下面的例子里是mywords.txt),则分词结果则会是

小傻瓜/别/感冒/了

下面对我们的聊天记录进行分词:

import jieba

import codecs

def load_file_segment():

读取文本文件并分词

jieba.load_userdict(“mywords.txt”)

加载我们自己的词典

f = codecs.open(u"聊天记录.txt",‘r’,encoding=‘utf-8’)

打开文件

content = f.read()

读取文件到content中

f.close()

关闭文件

segment=[]

保存分词结果

segs=jieba.cut(content)

对整体进行分词

for seg in segs:

if len(seg) > 1 and seg != ‘\r\n’:

如果说分词得到的结果非单字,且不是换行符,则加入到数组中

segment.append(seg)

return segment

print(load_file_segment())

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值