吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

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

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

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

由于疫情,微信的聊天记录比以前多了很多,所以用python看看自己都聊了些什么事
初学python,果然发现我是那个举三反一的困难户~
下面是源码和效果图:
[Python] 纯文本查看 复制代码
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, 2024-6-1 16:18

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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