三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

把十年QQ空间说说完整搬回家:GetQzonehistory备份实战全记录

把十年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 都能跑。你需要准备三样东西:

  1. Python 3.6+(终端执行python --version确认)
  2. 能联网的电脑(抓取过程需要访问QQ空间接口)
  3. 手机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.txt

requirements.txt里的依赖各司其职:requests负责网络请求,BeautifulSoup4解析返回的HTML,pandas+openpyxl生成Excel,qrcodepyzbar负责二维码的生成与识别,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路径就行。

抓取过程发生了什么

扫码完成,程序会自动进入抓取阶段,整个流程可以概括为四步:

从登录验证、数据获取、解析处理到结果导出与异常处理,主流程形成一个完整闭环

  1. 统计消息总量:用二分法探测消息列表的总条数,终端会显示进度。
  2. 分页拉取:每次取 10 条互动消息,逐页解析时间、内容、图片链接和评论。
  3. 补充可见说说:主流程结束后,再调用第二个引擎把"未删除的可见说说"(含老说说和高清图)拉回来,与消息列表去重合并。
  4. 落盘导出:所有数据清洗分类后写入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.py

Windows 用户可以在"任务计划程序"里创建基本任务,触发器设为每月,操作指向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),仅供参考

← 返回列表