Mobile wallpaper 1Mobile wallpaper 2Mobile wallpaper 3Mobile wallpaper 4Mobile wallpaper 5
448 字
2 分钟
微信聊天记录导出方案
2025-07-07
无标签
统计加载中...

花絮#

猜你没见过:

新的微信比 NTQQ 还新,虽然现成的项目多,但是大部分都失效了,目前比较省事的有两个方向:

  • 解析 iOS/iPadOS 的备份得到聊天记录
  • root 安卓直接拿到数据库然后破解

我的荣耀手机不能 root,所以只试了第一个。

iOS 导出步骤#

我试了好多别的项目,最终使用了 WeChatExporter (因为就这个还能用),项目地址: https://github.com/BlueMatthew/WechatExporter

备份 iPhone 或 iPad#

mac 用 finder,windows 用 iTunes 备份一下 iPad

用 WeChatExporter 导出#

项目的 release 里的 mac 版只有会闪退的 x64 版本,无奈之下我用 crossover 开了 windows 版的。

导出没有 csv 的选项,导出成文本的话会掺杂很多表情包的 [Facepalm] [Lol]……,图片消息 [Image] 等乱七八糟的文本,并不太好全部筛除,所以我选择了导出成 html 之后再解析 html。

导出之前最好在 Options 里面把异步加载关了,不然网页不是静态的,不好处理。

处理 html#

复制里面的一个 html 出来,比如叫 index.html.

from bs4 import BeautifulSoup as BS
import pandas as pd
# 读文件
with open('index.html', 'r', encoding='utf-8') as f:
raw_content = f.read()
# 顺便还能复习一下 BeautifulSoup 的说
soup = BS(raw_content, 'lxml')
results = []
# msgtype = 1 筛出来所有的文本消息
for msg in soup.find_all('div', class_='msg', msgtype='1'):
# 判断是谁发的
if 'left' in msg.get('class', []):
user = False
elif 'right' in msg.get('class', []):
user = True
else:
user = None
# 获取时间
nt_box = msg.find('div', class_='nt-box')
if nt_box:
time_text = nt_box.get_text(strip=True)
# 获取消息内容
msg_text_tag = msg.find('span', class_='msg-text')
if msg_text_tag and msg_text_tag.pre:
content = msg_text_tag.pre.get_text(strip=True)
else:
content = None
results.append({'time': time_text[-19:], 'content': content, 'user': user})
# 转成 DataFrame 保存
df = pd.DataFrame(results)
df.to_csv('wx.csv')

截止到现在所有数据的问题就都解决了,接下来可以愉快的分析数据了。

微信聊天记录导出方案
https://starlab.top/posts/wx-history-export/
作者
Star
发布于
2025-07-07
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时