最新动态
2024年最全谁说程序员不浪漫?Python导出微信聊天记录生成爱的词云图
2024-11-17 03:49  浏览:87

原来又双叒叕要到了

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

全民不知道送什么礼物的系列日子了…

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

哎呦 你们这些

磨人的小(lao)妖(you)精(tiao

Python倒是觉得你还可以抢救一下

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

说到词云应该不陌生,不知道的童靴往下看

词云,就是把网络文本中出现频率较高

"关键词"予以视觉上的突出

浏览者只要一眼扫过文本就可以领略其主旨

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

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

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

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


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

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

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

1. 下载夜神模拟器

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

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

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

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

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

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

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

  • 2024年最全谁说程序员不浪漫?Python导出微信聊天记录生成爱的词云图

  • 2024年最全谁说程序员不浪漫?Python导出微信聊天记录生成爱的词云图

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

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

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

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

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

  1. 勾选我们刚刚导出的聊天记录,并在手机上点击开始恢复
  • 2024年最全谁说程序员不浪漫?Python导出微信聊天记录生成爱的词云图

  • 2024年最全谁说程序员不浪漫?Python导出微信聊天记录生成爱的词云图

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

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

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

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

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

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

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

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

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

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

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

12. 导出该数据库后,使用一款叫 **sqlcipher **的软件读取数据(链接: https://pan.baidu.com/s/1Im3n02yseo-4IxeDY9srqQ提取码: ka4z

在这之前,我们还需要知道该数据库的密码,根据前人的经验,该密码的公式如下

字符串 " IMEI (手机序列号) UIN(用户信息号"

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

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

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

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

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

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

/data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml

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

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

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

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

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

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

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

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

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

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

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

#!/usr/bin/python

import pandas

import csv, sqlite3

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

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

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

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

cursor = conn.cursor()

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

value=cursor.fetchall()

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

for i in value:

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

data.close()

cursor.close()

conn.close()

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

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

当然你还可以用正则表达式去除以下内容

  1. 微信发送的数据:wxid.*

  2. __表情:[.]*

不过我觉得这些也是必要的聊天信息之一,留着也无妨,因此在这里就不加入进去啦

最后得到的文本格式就是一行一句聊天内容,处理后我们就准备好进入下一个环节了!那就是令人激动的生成词云

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

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

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

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

小/傻瓜/别/感冒/了

如果你把“小傻瓜”加入到自定义词典里(我们下面的例子里是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()

f.close()

segment=[]

segs=jieba.cut(content)

for seg in segs:

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

segment.append(seg)

return segment

print(load_file_segment())

在这个函数里,我们使用了codecs打开我们的聊天记录文件,然后进行结巴分词,最终返回一个包含所有词语的数组。记得运行前要安装jieba分词包,默认你已经安装了python3.

windows打开CMD/macOS系统打开Terminal 输入

pip install jieba

安装完成后,在编辑器中输入我们刚刚的python代码,我将其命名为segment.py,切记在同个目录下放置 聊天记录.txt 及 自定义词表 mywords.txt, 然后在CMD/Terminal中输入命令运行

python segment.py

你就可以看见你们的聊天记录分词后的效果啦

2. 计算分词后的词语对应的频数

为了方便计算,我们需要引入一个叫pandas的包,然后为了计算每个词的个数,我们还要引入一个叫numpy的包,cmd/terminal中输入以下命令安装pandas和numpy

  • pip install pandas

  • pip install numpy

详细的解析我都写在下方的注释里啦,大家可以自行阅读并实践。不过需要注意的是,里面的load_file_segment()是我们第一步里的函数,如果你不知道如何把这两个步骤合在一起,没关系,最后我们会提供一份完整的代码.

import pandas

import numpy

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

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

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

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

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

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

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

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

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

    以上就是本篇文章【2024年最全谁说程序员不浪漫?Python导出微信聊天记录生成爱的词云图】的全部内容了,欢迎阅览 ! 文章地址:http://xiaoguoguo.dbeile.cn/quote/835.html 
     行业      资讯      企业新闻      行情      企业黄页      同类资讯      网站地图      返回首页 多贝乐移动站 http://xiaoguoguo.dbeile.cn/mobile/ , 查看更多