一键备份QQ空间历史说说:GetQzonehistory 完整使用教程
【免费下载链接】GetQzonehistory获取QQ空间发布的历史说说项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
GetQzonehistory 是一个开源工具,能把一个 QQ 账号在空间里发布的历史说说、图片、评论和好友信息批量抓下来,在本地归档成 Excel、HTML 和 Markdown 文件。如果你的空间积累了几年内容,值得花十分钟给它留一份副本。
为什么要单独备份空间说说
平时我们很少碰自己的空间,直到某次想翻两三年前的动态才发现:消息列表一翻,老内容越来越难找,手动截图既慢又不全。截图备份有几个绕不开的问题:
- 只能存文字和图片,时间线、评论这些上下文全丢了
- 手动操作无法保证一条不落
- 图片链接过期后,连截图里的原图都可能失效
GetQzonehistory 的思路是模拟登录空间网页版,把接口返回的数据完整落到本地文件里,相当于给账号做了一次"冷备"。工具仅用于学习和个人数据留存,别拿来做别的事。
三条命令跑起来:克隆、装依赖、执行
准备工作很常规,只需要 Python 3。
git clone https://gitcode.com/GitHub_Trending/ge/GetQzonehistory cd GetQzonehistory python -m venv myenv source myenv/bin/activate # Windows 用 .\myenv\Scripts\activate pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt python main.pyLinux 和 macOS 用户注意:扫码识别依赖 zbar 这个系统库,没有的话程序启动时会提示安装方式(比如
sudo dnf install -y zbar),装上再运行即可。
requirements.txt里的核心依赖就是 requests、beautifulsoup4、pandas、qrcode 这几个,作用分别是发请求、解析网页、写 Excel 和渲染二维码。
扫码登录这一步是怎么运作的
运行main.py后,终端会直接在命令行里打印出一个 ASCII 二维码,用手机 QQ 扫一下、确认登录,整个过程不需要输入密码。
登录相关的逻辑都放在 LoginUtil.py 里,流程可以概括为:
- 向 QQ 登录接口申请一个一次性二维码(同时会存一份图片到
resource/temp/QR.png,终端显示异常时直接打开这张图扫) - 程序轮询登录状态:未失效 → 认证中 → 登录成功
- 成功后把登录凭证(cookie)按 QQ 号存进
resource/user/目录
这个设计带来一个很实用的好处:下次运行不用重新扫码。再次启动时如果resource/user/里已有登录记录,程序会列出已登录的账号让你选序号,输入 0 则重新走扫码流程。也就是说,你给多个账号分别备份一次,之后可以轮流复用各自的登录态。
它到底抓了什么:两个数据源
数据获取分两条线进行,对应 GetAllMomentsUtil.py 和主程序里的消息列表循环:
| 数据源 | 抓取方式 | 特点 |
|---|---|---|
| 历史消息列表 | 每次取 10 条,逐页往前翻,每页间隔 3 秒 | 覆盖面广,包含互动记录 |
| 未删除的可见说说 | 每页 30 条按偏移量翻页,直到取完 | 按总数精确分页 |
两条线的数据会做去重合并,再补上图片下载和评论整理。
有个边界要说清楚:凡是消息列表和说说列表里本身不存在的内容(比如设置成仅自己可见的说说),工具同样拿不到——它只能"看到"你空间里可见的部分。
数据去哪儿了:七个产物文件
全部抓取结束后,程序会在resource/result/你的QQ号/下生成一套完整档案,并自动打开该文件夹方便检查:
| 文件 | 内容 |
|---|---|
{QQ号}_全部列表.xlsx | 消息列表 + 说说的合并总表(时间 / 内容 / 图片链接 / 评论) |
{QQ号}_说说列表.xlsx | 只含自己发布的说说 |
{QQ号}_转发列表.xlsx | 自己转发的内容 |
{QQ号}_留言列表.xlsx | 自己在别人空间的留言 |
{QQ号}_其他列表.xlsx | 好友等其他人的动态 |
{QQ号}_好友列表.xlsx | 昵称、QQ 号、空间主页链接 |
{QQ号}_说说网页版.html | 按网页版样式还原的本地页面,图片自动换成高清原图 |
另外pic/子目录存放所有下载的说说图片,文件名取说说正文开头,重名时自动加时间戳。
还有一个细节值得提:程序注册了中断信号处理,你按 Ctrl+C 提前终止时,已经抓到的部分数据会被正常保存,不会白跑。
想要更顺眼的存档?跑 Markdown 版
如果你更喜欢直接阅读而不是翻表格,项目里还有一个独立入口 fetch_all_message.py:
python fetch_all_message.py它专门抓取全部可见且未删除的说说(能覆盖到 2014 年之前的老内容),输出到resource/fetch-all/目录,包含:
所有可见说说.md:每条说说带发布时间,转发内容用引用块标出,评论逐条列出- 说说配图全部下载到同目录,Markdown 里直接引用
- 原始 JSON 会留作缓存,重复运行时不用重新拉全量数据
Excel 版和 Markdown 版不冲突,两个都跑一遍,等于同一份数据两种归档格式。
配置只有一个文件:config.ini
全部可调项集中在resource/config/config.ini,结构很轻,只有一个[File]段,控制三个路径:
[File] temp = ./resource/temp/ # 二维码等临时文件 user = ./resource/user/ # 登录凭证缓存 result = ./resource/result/ # 导出结果程序首次运行会自动创建这些目录。登录凭证只保存在你自己电脑的resource/user/下,按 QQ 号命名,管理多账号时认准它。
常见问题速查
| 症状 | 原因 | 处理办法 |
|---|---|---|
| 启动时报"无法找到 zbar 共享库" | 缺少系统扫码库 | 按终端提示安装(Linux 装 zbar,macOS 可走 Homebrew),装完重跑 |
| 终端里没有二维码 | 部分终端渲染 ASCII 图会乱码 | 直接打开resource/temp/QR.png扫码 |
| 提示"二维码已失效" | 二维码有时效,没及时扫 | 重新运行,会生成新码 |
| 跑一半断了 | 手动 Ctrl+C 或网络波动 | 不用慌,已抓数据已落盘;重新运行即可 |
| 备份结果缺一些说说 | 那些内容在消息/说说列表里本就不存在(如仅自己可见) | 属正常边界,见前文说明 |
| Excel 打开乱码或失败 | 文件还在写入中 | 等程序跑完再看;确认openpyxl已安装 |
上手建议
第一次跑main.py时别急着关终端,把进度条放完,检查resource/result/里的文件是否齐全;老内容多的账号再补跑一次fetch_all_message.py,拿到 Markdown 版本。两份档案一份表格一份文档,以后想查哪条说说,本地搜索就行,不用再惦记线上还有没有。
【免费下载链接】GetQzonehistory获取QQ空间发布的历史说说项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考