吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 15687|回复: 51
收起左侧

[Python 转载] python词云-和女朋友的微信聊天记录

  [复制链接]
CBL-XG 发表于 2020-4-12 15:48
本帖最后由 CBL-XG 于 2020-4-12 17:01 编辑

由于疫情,微信的聊天记录比以前多了很多,所以用python看看自己都聊了些什么事
初学python,果然发现我是那个举三反一的困难户~
下面是源码和效果图:
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import csv, jieba, re
from itertools import islice
import pandas as pd
import imageio
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
 
 
# 从导出的csv格式聊天记录中提取中文存入txt文件中
def csv_to_txt():
    chat_csv = open("my_chat.csv","r",encoding="utf-8") #chatlog.csv 改成自己的聊天记录文件名
    my_chat = csv.reader(chat_csv)
    fp = open("chat.txt", "w+", encoding="utf-8")
    for line in islice(my_chat, 1, None):
        if re.search("[\u4e00-\u9fa5]", line[8]) and len(line[8]) < 50:
            fp.write(line[8] + "\n")
    fp.close()
 
 
# 对聊天记录文件进行分词
def cut_words():
    # 把聊天内容读取给content
    fp = open("chat.txt", "r", encoding="utf-8")
    content = fp.read()
    fp.close()
    jieba.load_userdict("custom_dict.txt"# 载入自定义词典(格式:一个词占一行;每行分为:词语、词频(可省略)、词性(可省略),用空格隔开)
    words = jieba.cut(content)  # 进行分词,模式:精确模式
    word_L = []  # 把分词结果存入word_L中
    # 加载停用词
    with open("stopwords.txt", 'r', encoding="utf-8") as ss:
        stopwords = ss.read()
    # 把符合的词语存入word_L中
    for word in words:
        if word not in stopwords and word != '\n' and len(word) > 1:
            word_L.append(word)
    return word_L
 
 
# 生成词云
def word_cloud(words):
    # 对分词结果进行频率统计再转换成字典
    count_word_df = pd.DataFrame({"word":words}).groupby(["word"]).size()
    count_word_dt = count_word_df.to_dict()
    mk = imageio.imread('my_pic.jpg'# 设置词云形状
    mk_color = ImageColorGenerator(mk)  # 设置词云颜色
    # 配置词云参数
    wx_wc = WordCloud(
        background_color="white"# 如果是透明背景,设置background_color=None
        mode="RGB"# 如果是透明背景,设置mode="RGBA"
        mask=mk,  # 词云形状
        font_path="青鸟华光简胖头鱼.TTF"# 字体可以更改为自己喜欢的字体,在C:\Windows\Fonts文件夹
        scale=3# 如果输出图片大小不满意,则修改此值
    )
    wx_wc = wx_wc.generate_from_frequencies(count_word_dt)  # 把带频率的分词结果导入词云
    wx_wc.to_file("wordcloud.png"# 输出词云图片,未设置颜色
 
    # plt输出图片
    plt.axis("off"# 关闭坐标轴
    plt.imshow(wx_wc.recolor(color_func=mk_color)) # 设置颜色
    plt.savefig('pltwordcloud.png', dpi=400# 输出词云图片,以原图片为背景色
 
 
def run():
    csv_to_txt()
    words = cut_words()
    word_cloud(words)
 
if __name__ == '__main__':
    run()

效果图:
1c9a87381df589b73b8d7a44a2b6901.png
=================================================================================
一、如何获取聊天记录
       1.你需要和谁的聊天记录生成词云,就把和她的聊天记录通过电脑版微信备份一下,然后通过安卓模拟器再把她的聊天记录从 电脑版微信 恢复到 模拟器的微信 里面。
       2.通过re或者类似文件管理器找到这个/data/data/com.tencent.mm/MicroMsg路径,下面有一个数字和字母组成名称很长的文件夹,把里面EnMicroMsg.db文件取出到电脑里备用
       3./data/data/com.tencent.mm/shared_prefs路径下有一个auth_info_key_prefs.xml文件,记住里面的_auth_uin值(这个值可能是9位,10位或者负数)备用
       4.打开模拟器的设置界面,记住IMEI
       5.用你得到的IMEI值 拼接 UIN值(例如IMEI:865166023282877 UIN:1002623291 拼接结果:8651660232828771002623291)放在MD5计算网站加密,得到一个32位小写的值,取前七位
       6.用 sqlcipher 软件打开之前的第2步得到的EnMicroMsg.db文件(File - Open Database 或者文件直接拖拽进去),把第5步得到的七位值输进去
       7.把聊天记录文件导出为csv格式(File - Export - Table as CSV file),选择message然后点击Export,命名为my_chat.csv,用记事本打开次文件,以utf-8格式保存。
       040238798cccab6f11384afadaa3719.png
二、需要用到的文件及python库
       1. sqlcipher 软件 、电脑版微信 、夜神(雷电等)模拟器
       2. stopwords.txt、 custom_dict.txt、 my_chat.csv(第一步获取到的)、my_pic.jpg(网上自行下载喜欢的图片后改名)、青鸟华光简胖头鱼.TTF(本帖效果图字体文件,可以自行选择)
       3. python库:jieba pandas matplotlib wordcloud
三、源码及所需文件
      链接:https://pan.baidu.com/s/16AMDo-TT2umc23gGYKuSbw 提取码:00cg

免费评分

参与人数 7吾爱币 +9 热心值 +6 收起 理由
pengkuang + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
killua2011 + 1 + 1 我很赞同!
hshcompass + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
老干妈捞奶茶 + 1 我很赞同!
苏紫方璇 + 5 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Crdsa + 1 我很赞同!
千寻与蓝 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

我是人 发表于 2020-4-12 16:17
感谢您的分享!

请问苹果手机备份聊天记录,是不是按照您的方法也可以呢?
会导致手机中的微信记录丢失吗?

希望得到您的回复!谢谢!
 楼主| CBL-XG 发表于 2020-4-14 14:19
zhuhedong520 发表于 2020-4-14 14:13
楼主,我用你这个方法出来的md5 密码一直错误,请问是为啥子

如果你的uin是10位,直接拼接以后得出的密码是错误的,那就用uin减去4294967296得到的值再接在IMEI后面去计算,看看得到的密码对不对。还是不对的话,你可以换个模拟器再试试~
446917139 发表于 2020-4-12 16:16
感谢分享 之前一直想分析QQ聊天记录来着后来一直懒的弄了
 楼主| CBL-XG 发表于 2020-4-12 16:19
我是人 发表于 2020-4-12 16:17
感谢您的分享!

请问苹果手机备份聊天记录,是不是按照您的方法也可以呢?

微信记录丢失不会的,苹果应该也可以这样吧,你可以试一试。或者搜索咱们论坛,好像有苹果的工具
hshcompass 发表于 2020-4-12 16:31
这是好东东 ,没技术背景,希望成品。收藏了。
Vincent00001 发表于 2020-4-12 17:08
不明觉厉(⊙o⊙)!
我是人 发表于 2020-4-12 18:42
CBL-XG 发表于 2020-4-12 16:19
微信记录丢失不会的,苹果应该也可以这样吧,你可以试一试。或者搜索咱们论坛,好像有苹果的工具

好的。

谢谢你!
 楼主| CBL-XG 发表于 2020-4-12 19:32
hshcompass 发表于 2020-4-12 16:31
这是好东东 ,没技术背景,希望成品。收藏了。

我试试吧,可以的话明天发。
wangdachui 发表于 2020-4-13 00:10
微信不是已经自带备份功能了吗?
vagrantear 发表于 2020-4-13 09:32
可以,没有女朋友。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-5-18 06:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表