GetQzonehistory 实战:如何把QQ空间历史说说、评论和配图一次性完整导出
【免费下载链接】GetQzonehistory获取QQ空间发布的历史说说项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
QQ空间从来不提供数据导出入口。我想把几年的说说、留言和配图整理归档,能做的只有逐条点开、截图,评论和互动基本注定丢掉。后来我用了 GetQzonehistory——一个免费、纯本地运行的 Python 工具,通过官方扫码登录,把能拿到的历史说说、留言、转发连同配图和评论批量导出成本地 Excel 和图片文件夹,全程不碰密码。
它不是什么"数据恢复"黑科技,原理其实很朴素,先把这点说清楚,你才能判断自己该不该跑。
两条数据通道,一次自动去重
程序跑起来后做的事,拆开来只有三件:
| 通道 | 抓取什么 | 实现位置 |
|---|---|---|
| 空间历史消息列表 | 评论、转发、留言等互动记录,按批翻页 | main.py 调用 util/RequestUtil.py 的请求接口 |
| 自己空间的说说列表 | 当前仍可见、未删除的全部说说(含 2014 年之前的) | util/GetAllMomentsUtil.py,每页 30 条 |
| 合并落盘 | 两通道按内容比对去重后,统一分类保存 | main.py 的 save_data 函数 |
消息列表通道抓的是"别人跟你发生过的互动",说说通道抓的是"你空间里还挂着的动态"。前者有上限,后者只要空间里看得见就能取,两条通道互补,重复的内容由is_any_mutual_exist按文本比对剔除。
能拿回多少:一条明确的线
能拿回来的:
- 历史消息列表里还在的互动记录(评论、转发、留言);
- 当前空间里仍可见的说说,连图片带评论,包括 2014 年之前的老数据。
拿不回来的:
- 已经彻底删除的说说——接口里查不到,工具也无能为力;
- 设为"仅自己可见"、且从未出现在消息列表里的记录;
- 平台规则调整后从消息列表里消失的老互动。
一句话总结上限:列表里还留着 + 空间里还看得见。如果你发现消息列表被截短了,早跑一次多一分。
跑完你会拿到:6 张 Excel、1 个网页版、1 个图片文件夹 📦
所有成果落在resource/result/你的QQ号/目录下,路径由 resource/config/config.ini 控制,想换保存位置改那里即可:
| 文件 | 里面是什么 |
|---|---|
| QQ号_全部列表.xlsx | 所有互动消息按时间排序的完整清单 |
| QQ号_说说列表.xlsx | 你发布的原创说说(时间、内容、图片链接、评论) |
| QQ号_转发列表.xlsx | 你转发过的内容 |
| QQ号_留言列表.xlsx | 收到的留言 |
| QQ号_好友列表.xlsx | 互动过的好友昵称、QQ 号、空间主页 |
| QQ号_其他列表.xlsx | 未归入以上分类的记录 |
| QQ号_说说网页版.html | 还原空间样式的页面,浏览器直接打开 |
| pic/ 目录 | 说说配图,按内容命名归档 |
💡 两个容易忽略的细节:图片链接会被自动替换成高清版本(把链接里的
/m/换成/s/);文件名以内容命名并截到 40 字符,撞名时自动追加时间戳,不会互相覆盖。另外仓库里还有 fetch_all_message.py 这个入口,单独跑可见说说通道,输出带图片文件的 Markdown 版本(所有可见说说.md)。
从零跑起来 GetQzonehistory:四步
第 1 步,克隆仓库并进入目录:
git clone https://gitcode.com/GitHub_Trending/ge/GetQzonehistory cd GetQzonehistory第 2 步,建一个隔离的虚拟环境,把依赖关进去,不污染系统 Python:
python -m venv myenv第 3 步,激活环境并安装依赖(11 个包:requests、beautifulsoup4、pandas、qrcode、tqdm、pyzbar 等):
# Windows myenv\Scripts\activate # macOS / Linux source myenv/bin/activate pip install -r requirements.txt⚠️ 激活命令分系统,用错的话
python指向的还是系统环境,后面装的全是白装。依赖里 pyzbar 负责识别二维码:RPM 系 Linux 需先执行sudo dnf install -y zbar,macOS 执行brew install zbar——util/LoginUtil.py 在 Mac 上检测到 Homebrew 时会主动引导安装并建好软链接。
第 4 步,启动:
python main.py回车之后发生了什么
终端会先打印一个字符二维码,用手机 QQ 扫掉并确认,登录完成。凭证以 cookie 形式写进resource/user/目录,下次启动直接选序号复用,输入 0 才重新扫码。
接下来是最耗时间的部分。程序先用二分查找定位消息总数,然后每批 10 条翻页抓取;请求内部固定等 5 秒,每解析完一批再停 3 秒。这是刻意压低的节奏,防风控用的,进度条走得慢是正常现象,别中途催它。
抓取完消息列表后,程序自动切换说说通道补齐可见动态,去重合并,然后下配图、分表、生成网页版。
⚠️ 中途断了不用重头再来:程序注册了 Ctrl+C 和进程终止的信号保护(main.py 的 signal_handler),已抓到的数据会先存盘再退出,重跑一次拿到的仍是完整导出。
最后终端给出一串汇总:消息总条数、最早一条说说的发布时间、好友数、说说/转发/留言/其他各多少条、图片多少张,随后自动打开结果文件夹(Windows 用 startfile,macOS 用 open,Linux 用 xdg-open)。验收一眼就能看出有没有跑全。
常见问题:现象、原因、动作
| 现象 | 原因 | 动作 |
|---|---|---|
| 二维码扫了没反应 | 码已过期,或电脑/手机网络被代理拦截 | 重新运行python main.py出新码,检查两端网络连通 |
| 启动报找不到 zbar 共享库 | 系统缺少二维码识别的底层库 | macOS 跑brew install zbar;RPM 系 Linux 跑sudo dnf install -y zbar,装完重跑 |
| 导出到一半中断 | 手动停止或网络波动 | 落盘的 Excel 是完整数据;重跑程序会完整重新抓取一次 |
| Excel 双击打不开 | 文件正被 WPS/Office 占用 | 关闭占用程序后重开;或用 pandas 直接读.xlsx验证内容 |
导完之后,留一个习惯
我的用法是把"全部列表"按年份筛一遍,做成年度时间线;再用数据透视表统计每个好友的互动频次和最近一次互动时间,关系亲疏一表见分晓。更实际的是把它当保养项目:每季度全量跑一遍,导出耗时和互动量成正比,但一次完整备份换来的安心,远比翻空间截图省事。
从导出完成那一刻起,那些说说、评论和配图就不再只寄存在别人的服务器上,它们在你手里。
【免费下载链接】GetQzonehistory获取QQ空间发布的历史说说项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考