GetQzonehistory:把 QQ 空间历史说说批量备份为 Excel 与 HTML 的本地开源工具
GetQzonehistory:把 QQ 空间历史说说批量备份为 Excel 与 HTML 的本地开源工具
【免费下载链接】GetQzonehistory获取QQ空间发布的历史说说项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
GetQzonehistory 是一个本地运行的 Python 脚本,通过模拟扫码登录 QQ 空间,按批次抓取账号内的历史互动消息与可见说说,最终在本地生成 Excel 和 HTML 两份备份文件。所有数据不经过任何第三方服务器,适合想给自己多年的空间内容做一次离线存档的用户。
弃用账号前,如何把旧空间内容完整带走
不少人计划注销或长期弃用 QQ,但空间里几年的说说、照片还留着。手动复制既慢又容易漏,而注销操作一旦执行,内容就找不回来了。GetQzonehistory 的思路是趁账号还能登录,把互动消息列表和可见说说不分页地拉取下来,一次导出成可长期保存的表格和网页文件,之后无论账号发生什么变化,本地文件都还可用。
图片和评论失效之前,如何把它们保存下来
QQ 空间图片走的是 CDN 链接,年代久远的图片 URL 随时可能失效,评论、点赞数据也只存在于网页接口里。这个工具会把每条说说附带的原图逐张下载到本地文件夹,评论则结构化地写进 Excel 的对应列里。换句话说,它同时解决"文字在、图没了"和"正文在、评论区空了"这两个常见问题。
快速上手
环境要求 Python 3.9 以上。下面这条命令完成克隆仓库、创建虚拟环境并安装依赖:
git clone https://gitcode.com/GitHub_Trending/ge/GetQzonehistory cd GetQzonehistory python -m venv myenv # Windows: .\myenv\Scripts\activate / macOS、Linux: source myenv/bin/activate pip install -r requirements.txt依赖只有 requests、BeautifulSoup、pandas 等常见库。安装完成后运行主程序:
python main.py程序会显示一个二维码,用手机 QQ 扫码确认即可,全程不需要输入密码。登录成功后自动开始抓取,每批请求之间固定间隔 3 秒,控制台会实时显示进度条和已处理条数。说说较多的账号需要等待一段时间,属正常现象。
数据是怎么被抓下来并落盘的
GetQzonehistory 工作流程图,展示登录、抓取、解析、导出四个环节:
整个过程分为四步:
- 登录:程序在本地生成登录二维码,扫码成功后把会话凭证缓存在
resource/user/目录。下次运行可直接复用已登录的账号,不必重复扫码。 - 抓取:以"互动消息列表"为主数据源,该接口天然支持分页。程序先查询消息总条数,再按每批 10 条循环拉取;随后由 util/GetAllMomentsUtil.py 翻页补齐"仅自己可见"的说说,减少遗漏。
- 解析:返回的 HTML 交给 BeautifulSoup 解析,逐条提取发布时间、正文、图片链接与评论,并顺带收集消息中出现的好友昵称和 QQ 号。
- 落盘:按身份把数据分类——本人的说说、转发、留言和他人的动态分别写入不同 Excel;同时渲染一份网页版 HTML,并把所有图片下载到本地目录。
备份结果包含哪些文件
QQ 空间说说备份的导出结构,结果统一放在resource/result/<你的QQ号>/下:
QQ号_全部列表.xlsx:抓到的全部动态,按时间、内容、图片链接、评论四列组织。QQ号_说说列表.xlsx:本人发布的说说,最常用的那份。QQ号_转发列表.xlsx:本人转发的内容。QQ号_留言列表.xlsx:本人在他人空间的留言。QQ号_其他列表.xlsx:消息流里出现的他人动态,相当于互动记录存档。QQ号_好友列表.xlsx:抓取过程中收集到的好友昵称、QQ 号与主页链接。QQ号_说说网页版.html:按时间倒序还原的静态网页,保留头像、昵称、QQ 表情图标与图片,可直接归档、投屏回顾或打印成纪念册。pic/:所有说说的原图,文件名取说说正文片段,便于对号入座。
进阶用法
📌 拿到 Excel 之后,用 pandas 做二次加工比在表格里手动筛选方便得多。下面这段用于筛出某一年的说说并导出为 CSV:
import pandas as pd df = pd.read_excel("resource/result/你的QQ号/你的QQ号_说说列表.xlsx") df["时间"] = pd.to_datetime(df["时间"], format="%Y年%m月%d日 %H:%M") df[df["时间"].dt.year == 2016].to_csv("say2016.csv", index=False)列名以实际导出文件为准;同样的读法可以换成关键词检索、按年份统计发帖频率等处理。
📌 如果想定期补一次备份,可以在 Linux/macOS 上用 crontab 设置每月运行一次:
0 2 1 * * cd /path/to/GetQzonehistory && ./myenv/bin/python main.py需要注意的是,登录态会过期,长期无人值守时任务可能退化成反复等待扫码。更现实的用法是把定时任务当作每月提醒:脚本跑起来后补扫一次码,即可增量补抓新动态。
常见问题与隐私提示
- 二维码失效:扫码窗口期较短,过期后重新运行
main.py生成新的二维码即可。 - 抓不到某些说说:已删除、或设为仅自己可见且未出现在互动消息里的内容,现有接口拿不到,属预期行为而非故障。
- 不要调小请求间隔:main.py 中批与批之间的 sleep 是频控手段,调小间隔可能触发 QQ 风控,导致登录态被重置。
- 凭证文件要管好:
resource/user/下缓存的会话凭证等同有效登录态,备份完成后建议删除该目录,或对整份备份加密存放。 - 仅备份自己账号:本工具设计用途是备份本人数据,请勿用于抓取他人空间内容。
延伸阅读
- util/LoginUtil.py:二维码登录与会话缓存的实现。
- util/RequestUtil.py:分页拉取互动消息列表的接口封装。
- util/GetAllMomentsUtil.py:补齐仅自己可见说说的分页逻辑。
- resource/config/config.ini:缓存、结果等目录路径的配置入口。
【免费下载链接】GetQzonehistory获取QQ空间发布的历史说说项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
