当前位置:首页 » 微信营销 » 正文

导出微信聊天记录并分析

1512 人参与  2021年12月15日 14:59  分类 : 微信营销  评论

微信聊天记录导出

前提工作
  • 确认一下微信里聊天记录是否健在(bushi),如果方便,可以提前把其他人的聊天记录都删了,这样备份快,并且好找。

  • 如果有一些其他人的重要信息不太能删的,那最好确保你想要导出的这个人的聊天记录是所有人当中最多的,这样方便我们之后在导出到电脑后快速定位。(什么?你说你跟你npy的聊天记录不是最多的?那你直接?️了。)

(实际上关于如何确定哪个记录属于谁这个问题,可以通过微信ID来定位,然而这个方法貌似只适用于没有修改过微信默认ID的情况,因此这里就先不介绍了)

导出聊天记录到电脑

首先,我们下载iTunes,将手机连上电脑后,进行备份。如果你手机内容很多的话,这个过程可能要很久……

备份成功后,我们在 编辑/偏好设置/设备/ 中能够看到已经备份好的手机。

这之后我们下载“楼月免费iTunes备份管理器”,选择左侧微信聊天记录,选择Documents文件夹,点击上方导出,即可导出到我们电脑中的本地目录。

Documents文件下内,会有一个由数字字母组成的乱码一样的文件夹,该文件夹便是我们聊天记录所在的位置。(如果有多个微信账号,会有多个乱码文件夹,这时候判断一下文件大小应该分辨出不同的微信账号)

找到指定好友

这一步卡了我最久,后来我的解决方法是,下载SQLiteSpy软件

用该软件打开刚才的Documents/一堆乱码的文件夹/DB/MM.sqlite文件。然后,我们在软件左侧最下面找到一个名为sqlite_sequence的表,点击seq进行从大到小的排列。就可以定位出哪个表代表了你想要的那个人。表名形如Chat_xxxxxxxxxx

利用Python导出至Excel

确定了我们想要的与某人的聊天记录Chat_xxxxxxxxxx,下一步工作就是提取并进行分析,为了方便,这里我使用 python 脚本将聊天记录提取成 excel 表格。

#该程序可以实现将聊天记录导出为excel
import sqlite
import pandas as pd
with sqlite.connect(r&#;聊天记录目录/DB/MM.sqlite&#;as con:
    df = pd.read_sql_query("select * from Chat_xxx", con) #xxx即为刚才找到的制定好友代号

#保存至excel,这里直接用的相对路径
writer = pd.ExcelWriter(&#;wechat.xlsx&#;)
df.to_excel(writer, &#;Sheet&#;)
writer.save()

至此,导出聊天记录部分便大功告成,之后的分析就各显神通了。

你可以选择继续往下看我的聊天记录分析部分,这里我选择的是matlab。当然,直接用excel基本也能实现想要的功能了。

利用MATLAB分析聊天记录发送消息的时间确定。

excel 列表中的时间为 unix时间戳(定义为距离年月日的时间),因此我们首先要做的是将这个格式的时间转换为北京时间。

实际上,MATLAB 中有一个datenum函数,可以计算两者之间的时间差,因此从定义出发,我们可以将unix时间戳转换成北京时间:

date = datestr(unix_time// + datenum(,,))

新版的matlab中,可以直接运用datetime函数:

dt = datetime( unix_time, &#;ConvertFrom&#;&#;posixtime&#; )`
判断聊天记录的类型

有了时间之后,剩下的事情其实都好做了。我们可以算一下总条数,总字数之类的统计值,还可以画出这些值随时间变化的时序图。不过在确定字数的时候,我们会遇到一个问题,就是如何判断聊天记录的类型,因为聊天记录分为纯文字、图片、语音、视频、链接等不同类型。然而在我们导出的数据里面,这些内容都是以字符串的形式出现的。在跟手机上的消息对比后,我总结出如下:

% contains函数里msg之类的符号便代表不同的类型

if contains(message(i),&#;<msg><emoji&#;)
        amount_sticker = amount_sticker + ;
    elseif contains(message(i),&#;<?xml&#;) || contains(message(i),&#;<msg><img&#;)
        amount_figure = amount_figure + ;
    elseif contains(message(i),&#;<msg><voice&#;)
        amount_voice = amount_voice + ;
    elseif contains(message(i),&#;<msg><video&#;)
        amount_video = amount_video + ;
    elseif contains(message(i),&#;<msg><appmsg&#;)
        amount_other = amount_other + ;
    else
        amount_text = amount_text + ;



本文链接:https://www.woshiqian.com/post/51920.html

百度分享获取地址:https://share.baidu.com/code
微信聊天记录导出  

我是钱微信/QQ:5087088

广告位、广告合作QQ:5087088

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

       

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。