首页 > 编程知识 正文

删好友之前怎么导出聊天记录,苹果手机恢复单个好友聊天记录

时间:2023-05-06 21:22:07 阅读:165732 作者:1879

首先,放上我的iPhone手机导出微信聊天记录生成的单词群效果图。 (对于个别敏感词汇,请大家自己无视hhh。 )

关于导出手机聊天记录的方法,网络上的大部分教程都提到的“楼月微信聊天记录导出恢复助手”和“手机博士微信聊天记录查看”等软件这里提供了一种绝对免费的方法,可以方便地导出聊天历史记录。 附上根据聊天历史生成单词云的教程。 因为我的个人手机是ios系统,所以本篇blog暂时只针对ios系统。 Android系统导出微信记录似乎需要打开根权限。 请参考本教程附带的链接进行尝试。

第一步:备份手机下载iTunes软件,通过usb线将手机连接到电脑上,按照下图的步骤进行手机的备份。

注意在步骤4的对话框中显示“要加密备份内容吗?然后单击“不加密”。

备注(针对windows系统)备份的内存问题:

备份手机通常需要很大的空间,但iTunes默认将备份文件放在C驱动器中。 C驱动器空间不足可能会导致备份失败。 在这种情况下,您可以以管理员身份启动并输入cmd命令行,将备份文件夹转换为外部超链接

mklink /j 'C:Users您的用户名 appdataroamingapple computermobile sync ' '要更改的文件地址'例如我的电脑

如果显示“文件已经存在时,无法创建此文件”,请参见上面的' C:Users您的用户名AppDataRoamingApple Computer ' (应用程序计算机() )。 此时,您可以看到上面的命令创建了文件夹的快捷方式。 这意味着将文件夹的实际存储地址链接到了其他位置。 按如下方式移动备份位置: 有关更详细的教程,请参阅

百度经验: ITUNES更改备份存储路径(不放光驱,不占用光驱)。

查看隐藏项目

与备份手机文件教程的链接可以参考其中的1~6步进行:

如何将安卓手机的微信聊天记录导出到电脑上观看

第2步:导出聊天记录(此处以下全部针对ios系统……)

下载iPhone Backup Viewer。 以下是网站。

Extract Data from iPhone Backups

下载并打开软件时,软件会自动查找备份文件的位置,并显示以下内容: (lhdfbx太美了)单击中间的屏幕进入备份文件(单击最后一个图标)。 然后,单击右上角的“树结构”图标。

在左侧的文件栏中,找到并展开名为'针对安卓系统'的文件夹。 展开'AppDomain-com.tencent.xin'子文件夹,可以看到该子文件夹包含一些32位数字字符串(用MD5加密的32位字符串)。 这些文件夹存储在手机微信中,每个文件夹代表一个用户。 例如,有两个用户的微信登录过我的手机。 可能有多个文件夹是因为在短时间内其他用户可能登录了手机。Document在步骤2的注释部分回答。

展开上面的子文件夹找到并打开db子文件夹时,右侧是'如何判断哪个是我经常使用的那个账户'文件。 这就是所有的聊天日志文件。 您可以通过选择右上角的' http://www.Sina.com/'' http://www.Sina.com/'导出到所需位置。 如下所示。

注释' MM.sqlilte '文件的大小可以区分哪些用户的聊天记录需要导出。 通常,我们使用最多的微信账户,因为聊天记录很多,所以这个文件很大。 以我的手机为例,在名为' 493c439bf…'的文件夹里,我的' MM.sqlite '文件有800米,而在名为' cb33ae…'的文件夹里,我的' MM.sqlite '文件因此,' 493c439bf…'可以确定

第三步:分析聊天历史下载数据库视图软件。 推荐轻量的软件SQLiteSpy。 下载地址如下。

下载SQLite spy1.9. 13

下载后,用这个软件打开刚才保存的' MM.sqlite '文件。 在左侧的表中,所有以' Chat_ '开头的表都是单聊天记录或群聊或公众号聊天记录。 以' ChatExt2_ '开头的表没有用。 点击一个,右边的Message列下有所有的聊天记录。 图为我点击的群聊。 左侧的表名是乱码。 如何找到与某个特定人的聊天记录?

在左侧底部找到一个名为' sqlite_sequence '的表,然后单击查看该表的内容是name-seq关系表。 其中,name是左侧所有表名,seq是与此人交换消息的总数。 请单击“seq”列名称

对seq从小到大或从大到小排序。我们可以估计一下我们跟我们要找的人大概发过多少消息,排序后找到对应的表名去打开那个表。

比如在这里,我希望找到的那个人,我确信和他的聊天记录是最多的,因此我可以确信第一行的name就是他的那张表:因此在左侧找到名为"Chat_cb33aef1a7935289ed780a899b29da6d"的表,果不其然:

备注

更详细的关于表名与好友的对应关系储存在"WCDB_Contace.sqlite"数据库中,更详细的分析可以参考下面的链接中从第3条往后的内容:
iOS 微信数据库分析

第四步:导出聊天记录生成词云

接下来使用python对"MM.sqlite"数据库进行操作,可以执行导出、显示等。这里以生成词云为例:

先引入必需的包,这些包都需要预先安装(pip的使用可以自行百度~)

import reimport jiebaimport wordcloudimport sqlite3import cv2

首先连接数据库:

# connect databaseconn = sqlite3.connect("F:/iTunes/output/com.tencent.xin/Documents/493c439bf5d6404aac3ad6e5b1d29835/DB/MM.sqlite")c = conn.cursor()# data = c.execute("select name from sqlite_master where type='table' order by name")tabelname = "Chat_cb33aef1a7935289ed780a899b29da6d"search = c.execute("select Message from " + tabelname).fetchall()

第2行的参数是刚才保存的"MM.sqlite"文件的地址,可以用相对路径,不必须用绝对路径。

第4行是执行获取所有表名的SQL语句,如果需要遍历全部聊天记录可以使用该语句。

第5行是第二步中找到的表名。

第6行是从该表中查询所有的消息记录。

之后使用jieba对逐条消息进行分词:

# for each message: cut into wordswordList = []for each in search: find = re.findall(r'[u4e00-u9fa5]+', each[0]) for sentence in find: cutResult = jieba.cut(sentence, cut_all=False, HMM=True) for word in cutResult: wordList.append(word)

第4行是从查询结果中逐条消息地找到所有的中文字符。

第6~8行是对每句话进行分词,并把分出来的单词加入到wordList中。

之后设置停用词表,并更新分词列表:

# set Stopword listexcludes = ['这个', '不是', '觉得', '什么', '没有', '可以', '一个', '知道', '那个', '现在', '今天', '怎么', '时候', '所以' '一下', '有点', '可能', '然后', '感觉', '就是', '还是', '这么', '明天', '刚才', '你们', '的话', '要是', '一条', '那种', '这种', '以后', '而且', '两个', '我要', '反正', '不用', '一会', '直接', '肯定', '特别', '比较', '一次', '皱眉', '捂脸', '发抖', '愉快', '呲牙', '嘿哈']# get list of needed words result = []for word in wordList: if len(word) == 1: continue elif word in excludes: continue else: result.append(word)result = ' '.join(result)

第2行设置停用词表是为了不让这些词在词云中出现(因为这些词的出现频率都很高),也可以自己选择性地修改。记得要把各种emoji表情的名字也加进去,因为在聊天记录中emoji的名字会算作文字~

第9行排除单个字形成的词;第11行排除停用词表中的词。

第15行得到要输入给词云的字符串,字符串是以空格分隔的单词。

最后生成词云:

# generate wordcloudmask_jpg = cv2.imread("F:/Documents/Python/myProject/input/love_mask.jpg")w = wordcloud.WordCloud(mask=mask_jpg, font_path='C:/Windows/Fonts/小清新中文.TTF', width=600, height=525, max_words=400, collocations=False, max_font_size=110, background_color='black')w.generate(result)# set color2.jpg's colormap as the cloud's colormapcolor_jpg = cv2.imread("F:DocumentsPythonmyProjectinputcolor2.jpg")img_color = wordcloud.ImageColorGenerator(color_jpg)w.recolor(color_func=img_color)# write to filew.to_file('output/output9.png')

第2行是读入mask(遮罩)图片,目的是让词云匹配该图片的形状,这张图片中所有白色的区域都不会有词云出现。同样,参数的路径可以使用相对路径。在该示例中,我使用的是如下的图片:
第3行建立词云对象,mask参数指定mask图片,font_path指定字体的位置,width和height是生成图像的宽和高,max_words指定词云中最大包含词语的数量,collocations设为False防止词云中出现重复的词,max_font_size指定词云中词语最大的字号background_color指定生成图片的背景色。以上参数均允许为空。

第6行把文本内容加载进词云。

第8~10行读入一张颜色图片,这张图片的目的是让词云的色彩匹配这张图片里面的颜色,而不是使用默认颜色。如果不指定这张图片,词云就会按照预设的颜色方案给各个单词上色。在本示例中,我使用的是如下的图片:
最后一行把生成的词云写入文件。

程序运行结束后,查看生成的词云,最终效果如下图所示:

最后附上完整的代码:

import reimport jiebaimport wordcloudimport sqlite3import cv2if __name__ == '__main__': # connect database conn = sqlite3.connect("F:/iTunes/output/com.tencent.xin/Documents/493c439bf5d6404aac3ad6e5b1d29835/DB/MM.sqlite") c = conn.cursor() # data = c.execute("select name from sqlite_master where type='table' order by name") tabelname = "Chat_cb33aef1a7935289ed780a899b29da6d" search = c.execute("select Message from " + tabelname).fetchall() # for each message: cut into words wordList = [] for each in search: find = re.findall(r'[u4e00-u9fa5]+', each[0]) for sentence in find: cutResult = jieba.cut(sentence, cut_all=False, HMM=True) for word in cutResult: wordList.append(word) # set Stopword list excludes = ['这个', '不是', '觉得', '什么', '没有', '可以', '一个', '知道', '那个', '现在', '今天', '怎么', '时候', '所以' '一下', '有点', '可能', '然后', '感觉', '就是', '还是', '这么', '明天', '刚才', '你们', '的话', '要是', '一条', '那种', '这种', '以后', '而且', '两个', '我要', '反正', '不用', '一会', '直接', '肯定', '特别', '比较', '一次', '皱眉', '捂脸', '发抖', '愉快', '呲牙', '嘿哈'] # get list of needed words result = [] for word in wordList: if len(word) == 1: continue elif word in excludes: continue else: result.append(word) result = ' '.join(result) # generate wordcloud mask_jpg = cv2.imread("F:/Documents/Python/myProject/input/love_mask.jpg") w = wordcloud.WordCloud(mask=mask_jpg, font_path='C:/Windows/Fonts/小清新中文.TTF', width=600, height=525, max_words=400, collocations=False, max_font_size=110, background_color='black') w.generate(result) # set color2.jpg's colormap as the cloud's colormap color_jpg = cv2.imread("F:DocumentsPythonmyProjectinputcolor2.jpg") img_color = wordcloud.ImageColorGenerator(color_jpg) w.recolor(color_func=img_color) # write to file w.to_file('output/output9.png')

感谢阅读~

有任何问题欢迎在评论区交流~

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。