如何用 Python 备份 QQ 空间全部说说:GetQzonehistory 完整教程
【免费下载链接】GetQzonehistory获取QQ空间发布的历史说说项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
GetQzonehistory 是一个用 Python 编写的说说备份工具,可以完成完整的 QQ 空间备份:把账号下全部说说、评论和附带图片抓取下来,导出为 Excel、HTML 和本地图像文件夹。全程只需手机扫码,之后交给程序自己跑,结果按你的 QQ 号存进独立目录。
一、备份包长什么样:QQ 空间备份结果先行
先看看最终会拿到什么。程序跑完,所有文件落在resource/result/123456789/下:
resource/result/123456789/123456789_全部列表.xlsx:全部可见说说123456789_说说列表.xlsx:自己发布的原创123456789_转发列表.xlsx:分享内容123456789_留言列表.xlsx:好友在说说下的评论123456789_其他列表.xlsx:好友发在你空间的内容123456789_好友列表.xlsx:出现过的好友昵称、QQ 号与空间主页123456789_说说网页版.html:时间线网页pic/:全部附带图片,文件名取自说说正文
6 张 Excel 按内容类型划分,每张表都是同样的四列:时间、内容、图片链接、评论。"全部列表"是可见说说的全集;"说说列表""转发列表""留言列表"把原创、分享和好友评论分开,方便单独处理;"好友列表"则额外记下互动过的好友,顺手就是一张通讯录。
"说说网页版.html"还原了接近空间网页版的阅读体验。原创与转发合并成一条时间线,按时间倒序排列,QQ 表情转换成图片显示,图片直接内嵌,每条评论连同评论者头像一起展开。用浏览器打开就能翻看,适合离线归档或发给朋友。
pic 文件夹是 QQ 空间图片下载的落地结果。说说里的图片会被逐张下载,文件名由说说正文派生,非法字符替换为下划线,超过 40 个字符自动截断,重名时追加时间戳避免覆盖。跑完就得到一套可以按年份、按事件整理的本地图库。
导出的结构说到这里就清楚了,接下来看怎么把它跑出来。
二、三步跑起来:安装依赖与扫码登录
第一步,准备环境。克隆仓库并安装依赖,Python 3.8 以上即可:
git clone https://gitcode.com/GitHub_Trending/ge/GetQzonehistory cd GetQzonehistory pip install -r requirements.txt第二步,登录。运行主程序,终端里会出现一张字符画出的二维码:
python main.py用手机 QQ 扫码确认即可,二维码失效时重跑一次就行,全程不需要输入密码。登录逻辑集中在 LoginUtil.py 里,"二维码已失效""登录成功"等状态都会实时打印在终端上。
第三步,等待完成。登录成功后,程序先用二分法估算消息总数,再按每批 10 条抓取历史消息列表,批间暂停 3 秒;随后切换说说列表接口,按每页 30 条拉取全部未删除的说说,2014 年之前的内容也在范围内。终端全程显示进度,1000 条说说约需 15~30 分钟。
中途按 Ctrl+C 也没关系。程序注册了信号处理函数,退出前会先把已抓到的数据落盘;已抓取的说说列表还会写入本地缓存 JSON,重跑时不重复请求这部分内容,断点恢复的代价很小。
三、为什么它是安全的:扫码认证与本地处理
跑起来之后,更该关心的是信任问题。该工具的登录设计很直白:不碰密码。它走腾讯官方扫码登录接口,先请求一张二维码,画到终端里,再轮询扫码状态;你在手机确认后,本次登录生成一份会话 cookie,密码没有出现在任何环节里。
会话与数据都留在本地。登录拿到的 cookie 按 QQ 号写入 resource/user/ 下的文件,后续所有请求都由你自己的机器发出,说说文本、评论、图片只往本地硬盘写。程序没有别的上传通道,网络访问目标限定在 QQ 空间登录与消息接口。
代码完全开源,每一步都可以核对。整个工具只有十几个文件,这个 Python QQ 空间说说爬虫的请求逻辑集中在 util/ 下的几个文件里,打开 GetAllMomentsUtil.py 就能看到它调用了哪些接口、数据写到哪里。
四、进阶玩法:用 pandas 分析说说与制作年度回忆
数据到手后,还可以让它更实用一些。
用 pandas 分析发帖习惯
"全部列表"可以直接用 pandas 读取,几行代码就能按年份统计说说数量,看看哪一年你最爱记录生活:
import pandas as pd df = pd.read_excel("123456789_全部列表.xlsx") df["时间"] = df["时间"].str.replace("年", "-").str.replace("月", "-").str.replace("日", " ") df["时间"] = pd.to_datetime(df["时间"]) print(df.groupby(df["时间"].dt.year).size())在此基础上继续扩展,可以按月分组找最活跃的时段,也可以按评论条数排序,挑出互动最多的那几条。
制作年度回忆或电子相册
pic 文件夹的文件名就是说说正文,天然形成图文对应关系。想做电子相册时,从 Excel 里筛出某一年的记录,再按文件名把对应图片挑进相册即可;HTML 时间线也能直接当作素材,挑喜欢的页面打印或导出。每年年末做一次这样的回顾,是个很稳定的用法。
五、常见卡点速查
路不总是一帆风顺,先把最常遇到的几个卡点整理成表。
| 问题 | 原因与解法 |
|---|---|
| 二维码乱码或显示不全 | 字符画二维码需要 UTF-8 终端与等宽字体,换一个支持的终端或字体 |
| 导入 pyzbar 报错 | 缺少系统 zbar 共享库,先安装 zbar 再重跑 |
| 说说比想象中少 | "仅自己可见"或已删除的内容不进入消息列表,该工具只抓取可见记录 |
| 部分图片没下载下来 | 链接失效或网络不稳,检查 pic 目录后重跑程序补齐 |
| 抓取速度偏慢 | 程序每 10 条暂停 3 秒控制频率,1000 条约需 15~30 分钟,耐心等待即可 |
| 中断后能否续跑 | Ctrl+C 会先保存已抓数据且本地有缓存,重跑 python main.py 即可 |
GetQzonehistory 用一次扫码就能把 QQ 空间里的全部说说、评论与图片变成本地文件,完整源码都在仓库的 util/ 目录里,使用中遇到问题欢迎去仓库提 issue。数字记录值得被留下来。
【免费下载链接】GetQzonehistory获取QQ空间发布的历史说说项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考