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

您所在的位置:网站首页 如何生成聊天记录并发送 手把手教Python使用微信聊天记录生成词云

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

2024-03-14 09:10| 来源: 网络整理| 查看: 265

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

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

本文目录 Python使用微信聊天记录生成词云一、导出微信聊天记录二、获取数据库密码三、编译sqlcipher.exe四、导出csv文件五、简单处理csv文件六、使用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、打开文件后,734432902,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 jiebaimport numpyimport codecsimport pandasfrom matplotlib.image import imreadimport matplotlib.pyplot as pltfrom 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() 效果,点个赞吧,谢谢! 在这里插入图片描述


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3