QQ空间历史说说完整备份指南:一次扫码,把十年动态归档到本地
【免费下载链接】GetQzonehistory获取QQ空间发布的历史说说项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
打开 QQ空间往下翻,能回到的只是前几年的动态,更早的说说其实还在。GetQzonehistory就是做 QQ空间历史说说抓取 的开源工具:终端里扫一次码,它把历史消息列表整页拉完,再用可见说说补漏去重,最后输出一整套 Excel 表格、离线网页和图片文件夹到本地。
先看结果:导出完成会拿到几样东西
不急着讲步骤,先看你会得到什么。跑完程序后,它会直接打开resource/result/你的QQ号/这个文件夹:
- 你的QQ号_全部列表.xlsx:所有抓到的消息汇成一张表,时间、内容、图片链接、评论四列,适合整体盘点。
- 你的QQ号_说说列表.xlsx / 转发列表.xlsx / 留言列表.xlsx:按类型拆开,自己发的、转过的、收到的留言各看各的。
- 你的QQ号_其他列表.xlsx:不属于上面三类的其他互动记录。
- 你的QQ号_好友列表.xlsx:从互动里提取出的昵称、QQ 号、空间主页链接,相当于一份社交关系花名册。
- 你的QQ号_说说网页版.html:把说说和转发按时间倒序渲染成网页,头像、图片、评论都在,离线也能慢慢翻。
- pic/ 文件夹:说说里的图片批量下载,文件名直接取自说说内容,方便单独整理。
每条记录的时间都精确到秒。跑完时终端还会打印统计摘要:消息总数、最早的一条说说发布在什么时候、好友数、各表条数、图片数,档案齐不齐,当场就能核对。
四步跑通首次运行:QQ空间历史说说完整导出
开始前只需要 Python 3.6 及以上版本。
第一步,拿到项目
git clone https://gitcode.com/GitHub_Trending/ge/GetQzonehistory cd GetQzonehistory第二步,建虚拟环境并装依赖
python -m venv myenv # Windows 执行 myenv\Scripts\activate # macOS / Linux 执行 source myenv/bin/activate pip install -r requirements.txtrequirements.txt 里的依赖不多,核心是 beautifulsoup4(页面解析)、pandas(表格输出)、requests(网络请求)三件套。
第三步,运行主程序并扫码
python main.py终端会打印一个白底黑块的二维码,用手机 QQ 扫一下,全程不经过密码。登录逻辑在 util/LoginUtil.py,和网页版空间扫码登录是同一套机制。
第四步,等进度条走完
终端进度条按“10条”推进,每批停顿几秒,这是刻意的节奏控制,不是卡住。跑完自动打开导出目录。
两个省事的细节:首次登录态会缓存到resource/user/,下次运行在“已登录用户列表”里输入序号即可复用,输入 0 才是重新扫码。不想装 Python 的话,项目 release 页也提供了可直接执行的打包单文件,说明见 README.MD。
原理拆解:一次扫码如何变成完整档案
整个流程可以理解成盘点两处档案:一处是消息档案库(历史消息列表),一处是说说展厅(当前可见说说)。
先数档案库。工具不是一页页翻着数,而是用二分查找定位总数(见 util/RequestUtil.py 里的get_message_count):先问“第 500 万条存在吗”,不存在就问 250 万条,存在就往上找,一轮轮把总数夹出来。所以启动时你会先看到一段“正在获取消息列表数量”的进度条。
再逐格取件。总数拿到后,按每批 10 条向历史消息接口分页请求,用 BeautifulSoup 解析出每格的文字、时间、图片链接和评论人,主逻辑在 main.py。每翻一页歇 3 秒,避免请求过密被风控。
接着去展厅对单。档案库翻完,它还会走一遍展厅:util/GetAllMomentsUtil.py 按每页 30 条拉取“可见的未删除说说”,这部分连 2014 年之前的数据也能覆盖。然后和档案库对单——展厅里有而清单里没有的补进来,两边都有的不重复算。
最后分架上柜。util/ToolsUtil.py 负责页面清洗与 HTML 模板渲染,save_data()把数据拆成前面那几份表格、下载图片、生成网页版。程序还注册了中断信号:手动 Ctrl+C 时,会先把已抓到的数据落盘再退出,下次重跑不白干。
一句话总结完整链路:扫码取登录态 → 二分查找定总数 → 每批 10 条分页拉取 → 可见说说二次补漏去重 → 拆分 Excel、下载图片、渲染网页版。
避坑清单:数据不全、图片失效、zbar 报错与中断处理
“不够全”是边界,不是故障。工具的数据来源只有上面两条列表,两条列表都没有的内容就抓不到——最典型的是设置为仅自己可见的说说,它不出现在任何公开列表里。想验证覆盖度,看终端打印的“最早的一条说说发布在”即可。
部分图片下载失败是正常的。早年图床的链接很多已经失效,程序会跳过无效链接继续处理,不影响其余数据。想补的话,对照 Excel 里的图片链接列人工下载即可。
macOS / Linux 报 zbar 错误。终端里解码二维码依赖系统 zbar 库。macOS 执行brew install zbar,Fedora 系执行sudo dnf install -y zbar,装完重跑即可。程序在 util/LoginUtil.py 里检测到缺失时也会自动提示对应命令。
进度停顿时别以为死机了。每批请求约 5 秒、每批再歇 3 秒,消息越多等待越久,整体通常要几十分钟。中途想停就按 Ctrl+C,程序会先保存当前进度再退出。
进阶玩法:把一次性导出变成持续更新的档案
1. 把存档搬进网盘。保存路径由 util/ConfigUtil.py 从resource/config/config.ini统一读取。把result指向网盘同步目录,每次备份都自动落到你想放的地方。
2. 让它定时自己跑。写一条计划任务(Windows 任务计划程序或 Linux crontab),每季度执行一次python main.py。配合登录态复用,档案会持续跟上你最新的动态。
3. 用 pandas 做二次分析。把“全部列表.xlsx”读进 pandas,可以统计每年发帖量、提取高频词、找出评论互动最多的好友,做一份属于自己的“年度数字报告”。工具只交原始素材,怎么用完全由你定。
别等入口消失:现在跑完第一次备份
QQ空间的记录一直都在,但“能看到”不等于“随时取得到”。接口和入口的变动,可能让某几年的动态连翻都翻不动。
现在最值得做的就是一件事:按前面的四步跑一次python main.py,把这份可搜索、可分析、可永久保存的档案拿在手里。下次想回忆多年前那条说说,直接打开 Excel 就行。
【免费下载链接】GetQzonehistory获取QQ空间发布的历史说说项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考