GetQzonehistory:扫码一次,把 QQ 空间历史说说全量导出成 Excel 的实用指南
【免费下载链接】GetQzonehistory获取QQ空间发布的历史说说项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
GetQzonehistory 是一款面向想给空间数据做本地存档的用户的 Python 脚本:通过模拟扫码登录 QQ 空间,抓取该账号的全部历史说说,输出为六张 Excel 表格、本地图片文件夹和一个可离线浏览的网页。读完本文约 10 分钟,你会完整掌握从克隆到首次全量导出的流程,以及每个产物落在哪里、漏抓的条目怎么补。
能力清单:它替你解决的三件实事
1. 全量抓取:两个接口互为补位
消息列表做主线、说说接口做补位,合并去重后"还在"的内容不再漏抓。主程序 main.py 先按每批 10 条拉取历史互动消息列表,这个来源里既有你自己说说的文本、图片与评论,也含转发和好友留言;随后再调用未删除说说接口、每次翻 30 条翻页,两路数据按内容去重后合并。这一步专门用来补齐已经从消息列表里掉出去的条目。
2. 多格式归档:一份数据三种产出
同一批数据被写成表格、图片、网页三份,各自独立可用。内容按身份拆成六张 xlsx:全部列表、说说列表、转发、留言、其他与好友列表,列结构统一为时间、内容、图片链接、评论;说说附带的图片逐张下载到 pic 目录,文件名取说说正文并截断到 40 字符防重名;最后拼出一页按时间倒序的网页,QQ 表情被还原成图片形式,离线点开就能读。
3. 状态持久化:不重复扫码、不从头再来
登录态落盘,中断时已抓部分照样保存。扫码成功后 cookie 写入 resource/user/ 目录,下次运行程序直接列出已登录用户供你选序号,无需重新扫码;程序还注册了 SIGINT 与 SIGTERM 信号处理,中途按下 Ctrl+C 会自动触发一次已抓数据的落盘。
原理拆解:从扫码到 Excel 的三段链路
把它理解成雇了一位"代理档案员":你交出工牌,他按页抄录档案、编号归档,最后整齐码在你桌上,你不必再回档案室。整条链路拆成三段:
- 凭证段:util/LoginUtil.py 向登录服务请求二维码,轮询到"登录成功",并用返回的 p_skey 算出后续所有接口都要用的签名参数 g_tk。
- 数据段:请求模块对消息列表与说说列表两个接口依次发起分页请求,每次请求后固定歇息一段,刻意压低节奏。
- 产出段:工具模块负责 HTML 清洗、表情还原与网页模板,pandas 负责把数据写成 Excel。
输出路径在哪落盘,由 resource/config/config.ini 里三行定死:
[File] temp = ./resource/temp/ user = ./resource/user/ result = ./resource/result/一套 cookie、两个接口、三种产出,原理到此为止。
跑通步骤:四步从克隆到首次导出
这是纯脚本项目,不需要编译,不装插件,不碰 C 工具链,路线就是:克隆、装依赖、运行、查产出。
第一步 📦 克隆仓库—— 放到你选定的本地目录,所有产物只写入本地克隆内的 resource 子目录,仓库代码文件保持原样:
git clone https://gitcode.com/GitGitHub_Trending/ge/GetQzonehistory cd GetQzonehistory第二步 🔧 认清依赖—— requirements.txt 共 11 项,重量级的是 pandas、beautifulsoup4 与 pyzbar;其中 pyzbar 还要系统级 zbar 共享库配合。
第三步 ⏱️ 一条命令装完就跑—— macOS/Linux 可直接用下面这条命令串(Windows 把激活命令换成.\myenv\Scripts\activate):
python -m venv myenv && source myenv/bin/activate pip install -r requirements.txt python main.py终端会以 ASCII 字符画打印登录二维码,用手机 QQ 扫完等"登录成功"出现,程序随即开始拉消息列表,进度条按批推进。
第四步 🗂️ 检查产出并补抓—— 跑完会自行打开导出目录,里面应有一整套 Excel、pic 图片目录和说说网页 html。若消息列表覆盖不满意,可再单独执行python fetch_all_message.py:它拉取可见的未删除说说(含 2014 年之前的内容),额外产出一份 Markdown 归档。
成本与收益:运行代价与硬件底线
| 代价维度 | 不用工具(手动) | 工具运行后 |
|---|---|---|
| 千条消息的获取耗时 | 数小时逐条滚动保存 | 自动翻页,全程约 15 分钟 |
| 磁盘 | 图片散落在各设备 | 集中于 result 目录,文件名自动截断防冲突 |
| 登录态 | 每次重新验证 | cookie 缓存,重跑只选序号 |
硬件底线:不需要 GPU 与编译工具链,有网络、Python 3.x 和 2 GB 空闲内存的主流电脑即可,系统层面唯一额外依赖是 zbar。机器很旧或不想搭 Python 环境,直接取 Release 页面已打包好的单文件运行,零配置。
排障清单:四个高频问题
| 症状 | 原因 | 解法 |
|---|---|---|
| 首次运行提示"无法找到 zbar 共享库"后退出 | pyzbar 依赖的系统库缺失 | Linux 执行sudo dnf install -y zbar;macOS 用brew install zbar,脚本会自行检测并提示 |
| 每次都要重新扫二维码 | cookie 过期或未成功落盘 | 扫码成功后 cookie 写入 resource/user/,下次运行从已登录用户列表选序号即可 |
| 导出条数明显少于空间里的 | 仅自己可见与已删除的说说不出现在两个接口里 | 补跑 fetch_all_message.py 拉可见未删除部分;真正仅自己可见的内容属接口盲区 |
| 怕 Ctrl+C 后数据全丢 | 担心手动结束进程打断落盘 | 信号处理器已注册,中断即保存已抓部分;或放任它跑完,结束后自动落盘并打开目录 |
延伸方向
- 把脚本挂进定时任务,做成周期性的自动备份
- 基于 Excel 产出做发布时间、频率与图片数量的统计分析
- 用 Markdown 归档配合静态站点生成,搭一个个人存档页
收尾前勾掉三个自检项
- 扫码后:终端先打印"登录二维码获取成功",再打印"登录成功",且 resource/user/ 下多出一个 cookie 文件。
- 运行后:resource/result/{QQ号}/ 目录里同时出现 Excel 表格、pic/ 目录与说说网页 html。
- 打开网页:说说按时间倒序排列,图片与评论正常渲染,表情以图片形式显示。
遇到接口变更或导出缺陷,直接在仓库 Issue 区提交,或发邮件联系作者;作者在说明中明确留出了由社区补全代码的空间。
【免费下载链接】GetQzonehistory获取QQ空间发布的历史说说项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考