把十年QQ空间说说完整搬回家:GetQzonehistory备份实战全记录
把十年QQ空间说说完整搬回家:GetQzonehistory备份实战全记录
【免费下载链接】GetQzonehistory获取QQ空间发布的历史说说项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
你有没有想过,QQ空间里最早那条说说现在还看得到吗?换了三次手机、空间悄悄改过无数版界面之后,那些2012年熬夜发的文字、旅行照片和评论互动,很可能已经在某个角落悄悄消失。GetQzonehistory 就是为解决这个问题而生的开源工具:它通过模拟浏览器访问QQ空间官方接口,把你账号下发布的历史说说、转发、留言和图片全部抓取到本地,生成 Excel、网页版和图片目录三类备份,让每一段数字记忆都有了一份"永久副本"。
为什么你需要一个本地存档
云端数据看着安全,但账号异常、平台调整、链接失效这些事谁都说不准。GetQzonehistory 的核心思路很简单:趁数据还在,把它复制到自己的硬盘上。和手动截图、复制粘贴相比,它有这几个实打实的优势:
| 优势 | 一句话说明 |
|---|---|
| 完全本地处理 | 抓取、解析、导出都在本机完成,不经过任何第三方服务器 |
| 官方二维码登录 | 走QQ官方扫码流程,不碰账号密码,登录状态还会缓存到本地 |
| 双引擎抓取 | 既读互动消息列表,又单独拉取"未删除的可见说说",覆盖面更全 |
| 多格式导出 | 同一份数据同时产出 Excel、网页版 HTML、图片文件,按需取用 |
| 代码完全开源 | 每一步逻辑都可以翻源码核实,不存在"黑盒"顾虑 |
值得一提的是,它的第二个抓取引擎(GetAllMomentsUtil)会单独请求说说列表接口,能把 2014 年之前的老说说和高清原图一并取回来,这部分正是很多同类工具容易漏掉的。
备份前:环境检查与依赖准备
GetQzonehistory 基于 Python 开发,Windows、macOS、Linux 都能跑。你需要准备三样东西:
- Python 3.6+(终端执行
python --version确认) - 能联网的电脑(抓取过程需要访问QQ空间接口)
- 手机QQ(扫码登录用)
接下来在终端依次执行:
# 1. 克隆项目到本地 git clone https://gitcode.com/GitHub_Trending/ge/GetQzonehistory cd GetQzonehistory # 2. 创建并激活虚拟环境(推荐,避免污染系统Python) python -m venv myenv source myenv/bin/activate # Windows 用 .\myenv\Scripts\activate # 3. 安装依赖 pip install -r requirements.txt # 网络受限时可用国内镜像: # pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txtrequirements.txt里的依赖各司其职:requests负责网络请求,BeautifulSoup4解析返回的HTML,pandas+openpyxl生成Excel,qrcode和pyzbar负责二维码的生成与识别,Pillow处理登录二维码图片,tqdm显示进度条,chardet自动探测网页编码。
第一次运行:扫码登录与多账号切换
环境就绪后直接启动主程序:
python main.py程序会在resource/temp/下生成QR.png二维码,同时把二维码以字符画形式打印在终端里。打开手机QQ扫一扫,确认登录即可,全程不需要输入密码。
登录成功后有两件小事值得注意:
- Cookie 会缓存到
resource/user/目录(以 QQ 号为文件名)。下次再运行,程序会列出"已登录用户列表"让你选择,直接回车即可跳过扫码;想换账号就输入0重新扫码。 - 目录路径可以自定义。所有保存位置都在
resource/config/config.ini里,默认配置如下:
[File] temp = ./resource/temp/ ; 临时文件,如登录二维码 user = ./resource/user/ ; 登录状态缓存 result = ./resource/result/ ; 最终导出结果如果你想把备份放到别的磁盘,改这里的result路径就行。
抓取过程发生了什么
扫码完成,程序会自动进入抓取阶段,整个流程可以概括为四步:
从登录验证、数据获取、解析处理到结果导出与异常处理,主流程形成一个完整闭环
- 统计消息总量:用二分法探测消息列表的总条数,终端会显示进度。
- 分页拉取:每次取 10 条互动消息,逐页解析时间、内容、图片链接和评论。
- 补充可见说说:主流程结束后,再调用第二个引擎把"未删除的可见说说"(含老说说和高清图)拉回来,与消息列表去重合并。
- 落盘导出:所有数据清洗分类后写入
resource/result/你的QQ号/目录。
程序还注册了中断信号处理:如果中途按Ctrl+C,已抓到的数据会被立即保存,不会白跑一趟。想抓取"未删除的可见说说"的 Markdown 版本,可以改用另一个入口:
python fetch_all_message.py它会按说说 ID 逐条下载图片,最终生成一份resource/fetch-all/所有可见说说.md,连转发内容和评论回复都会以 Markdown 引用块和列表的形式还原,适合后续导入笔记软件。
导出结果长什么样
备份完成后,resource/result/你的QQ号/下就是全部家当:
所有结果以QQ号为主目录组织,Excel 表格、网页版 HTML 与图片文件夹各司其职
各文件的用途对比如下:
| 文件 | 字段/内容 | 适合场景 |
|---|---|---|
{QQ}_全部列表.xlsx | 时间、内容、图片链接、评论 | 原始数据全量存档 |
{QQ}_说说列表.xlsx | 自己发布的原创说说 | 核心内容分析 |
{QQ}_转发列表.xlsx | 转发的内容 | 单独回顾转发记录 |
{QQ}_留言列表.xlsx | 好友在空间的留言 | 翻看好友互动 |
{QQ}_其他列表.xlsx | 其他互动消息 | 补充信息 |
{QQ}_好友列表.xlsx | 昵称、QQ、空间主页 | 重建好友关系网 |
{QQ}_说说网页版.html | 还原QQ空间样式的网页 | 离线浏览、分享展示 |
pic/ | 按说说内容命名的 JPG 图片 | 照片永久保存 |
说说列表里的"评论"字段是结构化列表,格式为[["时间","内容","昵称","QQ号"], ...],四列信息一应俱全,方便程序化处理。网页版则按时间倒序排列,头像、正文、图片、评论全都有,双击就能在浏览器里像逛空间一样翻看。
三个进阶玩法
玩法一:用 pandas 做十年发帖复盘
导出 Excel 后,你可以像处理普通数据一样分析自己的"空间人生":
import pandas as pd df = pd.read_excel('123456789_说说列表.xlsx') # 换成你的QQ号 df['发布时间'] = pd.to_datetime(df['时间'], format='%Y年%m月%d日 %H:%M:%S', errors='coerce') # 按年份统计发帖量,看看哪一年你最爱表达 df['年份'] = df['发布时间'].dt.year print(df['年份'].value_counts().sort_index()) # 按小时统计,找出你习惯"深夜emo"的时间段 df['小时'] = df['发布时间'].dt.hour print(df['小时'].value_counts().sort_index())玩法二:调整抓取节奏,给服务器减减压
主程序默认每抓 10 条休息 3 秒,请求模块内部还会再睡 5 秒。如果说说数量很大、又不想被接口限流,可以在main.py里找到这两处调整:
time.sleep(3) # main.py 中的分页间隔,可改成 5 或更长 time.sleep(5) # util/RequestUtil.py 中的请求间隔,同样可调大放慢节奏换来的是更低的失败率,备份几千条说说时建议别调太快。
玩法三:用 cron 做月度自动备份
配置一次系统定时任务,每月自动跑一遍,形成持续更新的数字档案馆:
# 编辑 crontab(Linux/macOS) crontab -e # 每月1日凌晨2点执行备份 0 2 1 * * cd /path/to/GetQzonehistory && /path/to/myenv/bin/python main.pyWindows 用户可以在"任务计划程序"里创建基本任务,触发器设为每月,操作指向python main.py即可。
常见问题快速排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 扫码后提示二维码失效/认证中 | 二维码过期或网络异常 | 重新运行程序生成新二维码;确认手机QQ已登录且网络畅通 |
| 只能抓到部分说说 | 接口限流或消息列表本身不含仅自己可见内容 | 分多次运行程序分批抓取;放慢抓取间隔;可见说说已由第二引擎尽量补齐 |
| 图片下载失败 | 网络波动或原链接已失效 | 从 Excel 的"图片链接"字段手动补下;检查pic/目录写入权限 |
pyzbar导入报错 | 缺少 zbar 共享库(Linux/macOS 常见) | Linux 执行sudo apt install libzbar0,macOS 执行brew install zbar后重装依赖 |
| 程序跑得慢 | 每批间隔 + 请求延时叠加所致 | 属正常现象,说说多就耐心等;也可按玩法二微调间隔 |
| 登录时提示选择用户 | 本地已有登录缓存 | 输入对应序号直接进入;输入 0 可重新扫码换账号 |
现在动手,把回忆握在自己手里
备份这件事,最好的时机是现在。数据在云端多待一天,就多一分不确定;而本地硬盘上的这份 Excel、网页和图片目录,才是真正属于你的。整个流程跑一遍大约需要十几分钟,之后无论是深夜翻看老说说,还是把图片整理成电子相册,都随你心意。
想深入了解实现细节,可以从这几个源码文件入手:
- 配置文件解析与多账号逻辑:util/ConfigUtil.py
- 二维码扫码登录实现:util/LoginUtil.py
- 网络请求与消息计数核心:util/RequestUtil.py
- 数据清洗、HTML模板与工具函数:util/ToolsUtil.py
每一段数字记忆都值得被妥善保管,现在就把你的QQ空间历史说说完整备份到本地吧。
【免费下载链接】GetQzonehistory获取QQ空间发布的历史说说项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
