100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 手把手教Python使用微信聊天记录生成词云

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

时间:2021-12-09 21:02:02

相关推荐

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

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

本文使用工具:

1、微信电脑版

2、模拟器(本文使用夜神模拟器)

3、/ 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、打开文件后,<string name ="last_login_uin">734432902</string>,734432902即为uin,将其保存下来。

4、到此,我们获取了IMEI和UIN,将IMEI+UIN拼接在一起,即为:351564288183262+734432902=351564288183262734432902。5、将351564288183262734432902复制到/MD5加密网站上解析,其中32位小写前七位即为微信聊天记录数据库密码:737ecee6、到这里,我们就获取到数据库密码了。当然这里有个坑,大家会发现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 jiebaimport numpyimport codecsimport pandasfrom matplotlib.image import imreadimport matplotlib.pyplot as pltfrom wordcloud import WordCloud, ImageColorGeneratordef 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 segmentdef get_words_count_dict():# 获得以上分词结果segment = load_file_segment()# 将分词数组转化为pandasdf = 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_countwords_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()

效果,点个赞吧,谢谢!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。