手把手教Python使用微信聊天记录生成词云

Python使用微信聊天记录生成词云

本文使用工具:
1、微信电脑版
2、模拟器(本文使用夜神模拟器)
3、https://md5jiami.bmcx.com/ MD5加密工具
4、Sqlcipher.exe
5、Excel
6、Pycharm

一、导出微信聊天记录

  • 1、官网下载模拟器、安装
  • 2、模拟器安装微信,在模拟器中登录微信,将想要的聊天记录备份到模拟器中。此步骤极为简单,这里不赘述。
    在这里插入图片描述
  • 3、在模拟器中找到备份聊天记录的数据库所在位置,通过文件助手备份至电脑文件夹。
  • /data/data/com.tencent.mm/MicroMsg/2bf2a2d7d94578b3n2d9v(文件中较长名称的文件夹)/EnMicroMsg.db
    在这里插入图片描述
    在文件助手中将EnMicroMsg.db保存至共享文件夹(Pictures)下,在电脑文件夹中可以查看到EnMicroMsg.db文件。
    在这里插入图片描述

二、获取数据库密码

微信聊天记录数据库密码是由手机IMIE+UIN组成的,为了绕开root,所以我们使用模拟器root获取IMEI,在模拟器中需要找1、IMEI以及2、UIN。

  • 1、在模拟器系统设置中,手机菜单下,找IMEI,保存下来。
    在这里插入图片描述
  • 2、在Amaze中/data/data/com.tencent.mm/shared_prefs下找com.tencent.mm_preferences.xml
    在这里插入图片描述
  • 3、打开文件后,<string name ="last_login_uin">734432902</string>,734432902即为uin,将其保存下来。
    在这里插入图片描述
  • 4、到此,我们获取了IMEI和UIN,将IMEI+UIN拼接在一起,即为:351564288183262+734432902=351564288183262734432902。
  • 5、将351564288183262734432902复制到https://md5jiami.bmcx.com/ MD5加密网站上解析,其中32位小写前七位即为微信聊天记录数据库密码:737ecee在这里插入图片描述
  • 6、到这里,我们就获取到数据库密码了。当然这里有个坑,大家会发现IMEI无论怎么找,加密出来的密码都不对。可以尝试一下1234567890ABCDEF代替一下IMEI。会有惊喜哦。

三、编译sqlcipher.exe

  • 现在网络这么强大,没必要自己编译了,而且编译出现的问题很多,不建议新手自己去编译,特别不友好。可以自己去搜索下载,网上很多的。也可以点赞之后留言一下,找我要哦。
    这里在Sqlcipher.exe中打开微信聊天记录数据库后输入,我们得到的数据库密码后,导出csv文件。
    在这里插入图片描述

四、导出csv文件

  • 导出csv文件,记得选择message,这个才是聊天内容。
    在这里插入图片描述

五、简单处理csv文件

  • 在csv文件中,content列为聊天内容,可以自己筛选去除没有用的数据,留下有用的数据。然后将该列数据复制到txt文件中,方便后续使用python生成词云。
    在这里插入图片描述

六、使用pycharm生成词云

  • 1、下载pycharm,创建一个项目。
    在这里插入图片描述
  • 2、这里需要导入包:
  • import jieba
  • import numpy
  • import codecs
  • import pandas
  • from matplotlib.image import imread
  • import matplotlib.pyplot as plt
  • from wordcloud import WordCloud,ImageColorGenerator
    可以在Python Interpreter中加入以上包。
    在这里插入图片描述
    也可以在底下Terminal中 pip install 以上包…
    在这里插入图片描述
    以下放出完整python代码:
import jieba
import numpy
import codecs
import pandas
from matplotlib.image import imread
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator

def load_file_segment():
    # 加载自己定义的词典单词
    jieba.load_userdict("mywords.txt")
    # 打开我们处理好的聊天文件
    f = codecs.open(u"123.txt", 'r', encoding='utf-8')
    # 读取聊天文件到content中
    content = f.read()
    # 关闭文件
    f.close()
    # 保存分词结果
    segment = []
    # 对整体进行分词
    segs = jieba.cut(content)
    for seg in segs:
        if len(seg) > 1 and seg != '\r\n':
            # 这里进行判断分词得到的结果不是单个字,并且不是换行符,就将分词加到数组中
            segment.append(seg)
    return segment
def get_words_count_dict():
    # 获得以上分词结果
    segment = load_file_segment()
    # 将分词数组转化为pandas
    df = pandas.DataFrame({'segment': segment})
    # 这里设置不想要的分词,将不想要的分词写入文件中,可以将设置好的分词剔除出去。
    stopwords = pandas.read_csv("stopwords.txt", index_col=False, quoting=3, sep="\t", names=['stopword'],encoding="utf-8")
    # 如果不在停用词中
    df = df[~df.segment.isin(stopwords.stopword)]
    # 按词分组,计算每个词的个数
    words_count = df.groupby(by=['segment'])['segment'].agg([("计数", numpy.size)])
    # reset_index保留segment字段,排序,数字大的在前面
    words_count = words_count.reset_index().sort_values(by="计数", ascending=False)
    return words_count

words_count = get_words_count_dict()
# 读取想要生成词云模板图片
bimg = imread('ai2.jpg')
wordcloud = WordCloud(background_color='white', mask=bimg, font_path='simhei.ttf')
words = words_count.set_index("segment").to_dict()
wordcloud = wordcloud.fit_words(words["计数"])
bimgColors = ImageColorGenerator(bimg)
plt.axis("off")
plt.imshow(wordcloud.recolor(color_func=bimgColors))
plt.show()
  • 效果,点个赞吧,谢谢!
    在这里插入图片描述
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_38055416

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值