GetQzonehistory:把十年的QQ空间说说搬到本地,配置只要5分钟
【免费下载链接】GetQzonehistory获取QQ空间发布的历史说说项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
上个月我想找回大学时在QQ空间发的一张老照片,翻了动态两页只加载到2019年。装了GetQzonehistory之后它把QQ空间的历史消息列表整条爬下来,整理成Excel、HTML和本地图片。它是纯本地运行的Python脚本,不需要输密码,扫码登录即可。
项目速览
| 项目 | 说明 |
|---|---|
| 项目名 | GetQzonehistory |
| 一句话定位 | 抓取QQ空间历史消息列表,把说说、图片、评论导出到本地 |
| 技术栈 | Python + requests + BeautifulSoup + pandas + qrcode/pyzbar |
| 核心能力 | 扫码登录;每批10条分批爬取历史消息;消息列表与可见说说双源合并去重;导出Excel/HTML/图片 |
| 适合谁 | 想给自己账号的空间做完整备份、会基本命令行操作的开发者 |
边界说明:它只备份自己账号的数据,范围是“历史消息列表 + 当前可见说说”;设为仅自己可见且从未出现在消息列表里的内容抓不到。它也不负责删改或同步回空间,只做单向导出。
从零跑通第一份备份
环境准备与依赖
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 -r requirements.txt注意 pyzbar 还依赖系统 zbar 库,我在 Linux 上先执行sudo dnf install zbar再启动才没报错。
首次运行:扫码与爬取
python main.py控制台先输出登录二维码,手机扫码后开始爬取,我看到的输出是:
用户<123456789>,<我的昵称>登录成功 正在获取消息列表数量... Progress: 100% | 43/43 [05:50<00:00, 8.1s/10条] Pause for 3 seconds...每10条带一次间隔,合计约8秒/批。我账号有400多条消息,这一阶段花了8分钟左右,进度条会显示总批数,可以预估剩余时间。
拿到产出物
结束时程序自动打开结果目录:
导出成功,请查看 resource/result/123456789 文件夹内容 共有 437 条消息 最早的一条说说发布在2015年03月20日 14:30:22产出都在resource/result/{你的QQ号}/下:
全部列表.xlsx:消息全量记录,含时间、内容、图片链接、评论说说列表.xlsx:自己发布的说说转发列表.xlsx/留言列表.xlsx/其他列表.xlsx:转发、好友留言及其他条目好友列表.xlsx:出现过的好友昵称、QQ号汇总说说网页版.html:还原空间样式的网页pic/:所有说说图片,按内容命名并处理重名
三个细节值得细看
缺失的说说怎么补
它解决消息列表覆盖不全的问题:带互动的老说说能还原,但纯文本无评论的说说可能漏掉。程序会再调一次可见说说接口,用is_any_mutual_exist按内容比对去重后合并。我实际跑出来,一条只有文字没有评论的2018年说说只出现在第二个数据源里,不合并就丢了。
中断后怎么续传
它解决长任务一打断全丢的问题:main.py 注册了 SIGINT 信号处理,Ctrl+C 时会先把内存里的数据写盘。我中途打断过一次去忙别的,回来结果文件夹里已经有写了一半的 xlsx 和下载好的图片,重新运行即可。
带图浏览说说怎么做到的
它解决 Excel 里只有图片链接没法看的问题:程序读取说说和转发两个 Excel,把 [em] 表情替换成图片标签、缩略图链接换成高清链接,再按模板渲染成单个 HTML。打开后接近空间原页面,点图能打开原图。
架构与数据流向
main.py 是主控:LoginUtil 扫码取 cookies 交给 RequestUtil 计算 g_tk 并分页请求,返回的 HTML 由 ToolsUtil 解析去重;抓完后调用 GetAllMomentsUtil 取可见说说合并,最后 save_data() 统一导出。数据单向流动:登录→请求→解析→导出,模块之间不反向调用。
实测常见坑
- 现象:启动报"zbar 共享库未找到" →原因:pyzbar 依赖系统 zbar →处理:先用 apt/dnf 装 zbar。
- 现象:进度慢得离谱 →原因:每10条强制休息约8秒防风控 →处理:按批数估算耗时等待。
- 现象:Ctrl+C 后数据没了 →原因:退出时保存没跑完 →处理:中断会自动落盘,别关终端。
- 现象:老说说缺失 →原因:仅自己可见的说说不进消息列表 →处理:平台限制,双源合并已尽力补齐。
- 现象:Windows 控制台乱码 →原因:默认 GBK 编码 →处理:先执行
chcp 65001。
行动清单
QQ空间的页面只展示最近动态,但历史消息还在系统里,用它把十年的说说一次性搬进本地 Excel,翻两页找不到东西的尴尬就解决了。
git clone https://gitcode.com/GitHub_Trending/ge/GetQzonehistory cd GetQzonehistory && python -m venv myenv && source myenv/bin/activate && pip install -r requirements.txt python main.py # 扫码登录后等待导出完成【免费下载链接】GetQzonehistory获取QQ空间发布的历史说说项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考