知识星球内容一键备份:用zsxq-spider制作专属PDF电子书全攻略
【免费下载链接】zsxq-spider爬取知识星球内容,并制作 PDF 电子书。项目地址: https://gitcode.com/gh_mirrors/zs/zsxq-spider
去年整理资料时,我发现一位博主两年前在知识星球分享的几十篇干货帖子,因为博主账号注销,内容全部变成了"无法查看"的灰色提示。那一刻我意识到:平台上的内容,其实并不真正属于你。账号异常、平台改版、星主停更,任何风吹草动都可能让付费内容付之东流。幸好,我遇到了 zsxq-spider——一个能把知识星球内容完整爬取并一键制作成 PDF 电子书的开源工具,从此告别"截图存稿"的原始时代。
为什么你需要它:一次配置,长期受益
zsxq-spider 是一个基于 Python 的轻量级脚本,通过调用知识星球官方接口,把星球内的帖子、问答、评论、图片统一抓取下来,再借助 wkhtmltopdf 渲染成排版整齐的 PDF 电子书。简单说,它解决的是三件大事:
- 数据归你所有:内容落地到本地文件,不怕账号与平台变动
- 离线随时可读:一份 PDF 装进手机、平板,通勤路上也能翻
- 批量高效归档:跑一次脚本,几百篇帖子自动成书,比手动截图快一个量级
相比一张张截图、一份份复制粘贴的笨办法,这个工具把"保存知识"这件事浓缩成了一行命令。下面我们就从最短路径开始。
三步跑通:从零到拿到第一本电子书
第一次上手,先别管高级参数,按下面三步走完整个流程,看到成果再研究玩法。
第一步:装好运行环境
需要 Python 3.7 及以上版本,然后安装三个 Python 依赖,再单独安装 wkhtmltopdf 这个 PDF 渲染引擎(记得把它的 bin 目录加进系统环境变量,这是最关键的步骤):
pip install pdfkit BeautifulSoup4 requests第二步:填三样关键信息
打开项目根目录的crawl.py,找到文件顶部的配置区,把下面三处改成你自己的:
ZSXQ_ACCESS_TOKEN:浏览器登录知识星球后,在开发者工具的 Cookie 里找到zsxq_access_token的值USER_AGENT:必须与登录时浏览器的一致,这是接口鉴权的另一半GROUP_ID:星球主页网址里那串数字,例如452445212848
第三步:运行脚本
python crawl.py脚本会自动拉取内容、下载图片、生成中间 HTML,最后合并输出电子书.pdf。首次运行建议把DEBUG设为True、DEBUG_NUM设为 60 左右,先导一小批验证配置正确,再放开跑全量。
四大核心能力,逐一拆解
1. 多类型内容解析,问答结构不丢失
知识星球里的内容形态很多——普通帖子、问答、任务、解决方案,还有匿名发言。脚本会对每种类型分别处理,尤其是问答场景:问题、回答者、回答正文会按顺序还原,读 PDF 时就像在读原帖。
content = topic.get('question', topic.get('talk', topic.get('task', topic.get('solution'))))这行代码按优先级取出对应内容体,匿名用户也会被识别为"匿名用户"而非报错中断。
2. 图片自动下载并内嵌,离线也能看图
开启DOWLOAD_PICS = True后,帖子里的每张图片都会被下载到本地,然后转码成 base64 数据直接写进 PDF。这样生成的文件是"自包含"的——不依赖任何外部图片链接,换设备、断网都能完整显示。
3. 评论与互动完整保留
设置DOWLOAD_COMMENTS = True,每条帖子的评论区都会被收录。脚本还特别处理了"回复某人的评论",会以[A 回复 B] : 内容的格式呈现,互动脉络一目了然。想要轻量版电子书,把这个开关关掉即可。
4. 精华筛选与时间区间,精准控制导出范围
- 只想导出精选内容:
ONLY_DIGESTS = True - 只导出某个时间段:
FROM_DATE_TO_DATE = True,再配合EARLY_DATE和LATE_DATE两个时间边界 - 单次请求条数:
COUNTS_PER_TIME控制,最大 30
这套组合拳让你能把几万条历史内容按需切片,想备份哪段就备份哪段。
进阶玩法:批量归档与样式定制
当星球内容量大时,试试这些调优姿势:
- 分批导出:按年份把时间区间切小,多次运行各生成一本 PDF,既好管理也好排查问题
- 控制请求节奏:保持
SLEEP_FLAG = True并设SLEEP_SEC = 2,两次请求之间留出间隔,避免给服务器造成压力 - 自定义排版:改
temp.css就能重塑整本书的观感,例如把标题居中、给图片加圆角和投影:
h1 { font-size: 40px; color: #2c3e50; text-align: center; } img { max-width: 100%; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); }- 自动清理中间产物:
DELETE_PICS_WHEN_DONE和DELETE_HTML_WHEN_DONE打开后,运行结束会自动清掉临时图片和 HTML 文件,只留最终 PDF
调优速查清单
| 目标 | 参数 | 推荐值 |
|---|---|---|
| 只导精华 | ONLY_DIGESTS | True |
| 按区间导出 | FROM_DATE_TO_DATE + EARLY/LATE_DATE | 分段设置 |
| 降低请求频率 | SLEEP_FLAG / SLEEP_SEC | True / 2~3 |
| 调试小批量 | DEBUG / DEBUG_NUM | True / 60~120 |
常见报错解决方案
现象一:接口鉴权失败,抓不到任何数据原因:Token 失效,或 User-Agent 与登录浏览器不一致。 对策:重新登录知识星球获取最新 Cookie 里的zsxq_access_token,并核对USER_AGENT是否和当前浏览器完全一致。
现象二:提示"电子书生成失败"原因:绝大多数是 wkhtmltopdf 没装好,或 bin 目录没进 PATH。 对策:重新安装 wkhtmltopdf,确认命令行里能直接敲出wkhtmltopdf命令;如果内容量很大,也可以拆小批次再生成。
现象三:导出内容不完整或中途卡住原因:单次请求数据量过大,或网络波动导致图片下载失败。 对策:把COUNTS_PER_TIME调小到 20,开启 DEBUG 定位卡住的位置;脚本本身对图片下载失败有重试机制,多跑一次通常能补齐。
现象四:按时间区间导出无效原因:时间格式写错,或边界值没带毫秒部分。 对策:严格按2017-05-25T00:00:00.000+0800这种格式填写,EARLY_DATE与LATE_DATE成对设置。
让备份成为习惯:三条可持续实践
拿到第一本电子书只是开始,更推荐把归档做成长期动作:
- 固定节奏备份:每月末跑一次全量导出,增量内容随时沉淀成册
- 按主题分册管理:用
PDF_FILE_NAME把文件名写成"星球名-年月"的格式,比如AI学习圈-2026-07.pdf,方便日后检索 - 多重保险:PDF 同时存一份到本地硬盘和云盘,每季度抽查一次文件能否正常打开
需要提醒的是:生成的电子书请仅作个人学习使用,不要随意传播,尊重星主与作者的劳动成果;同时保持合理的请求频率,毕竟知识星球是大家学习交流的地方,不是爬虫靶场。
现在就动手,建立你的私人数字图书馆
zsxq-spider 的价值,是把"平台借给你看的内容"真正变成"你拥有的资产"。从安装依赖到输出第一本 PDF,全程不会超过十分钟;而你收获的,是一个只属于自己、永不过期、随时可读的知识仓库。别等到内容消失那天才后悔,现在就 clone 项目试起来:
git clone https://gitcode.com/gh_mirrors/zs/zsxq-spider配置好 Token 和小组 ID,运行python crawl.py,然后静待几分钟——你就能翻开第一本亲手生成的电子书了。祝你归档顺利,阅读愉快!
【免费下载链接】zsxq-spider爬取知识星球内容,并制作 PDF 电子书。项目地址: https://gitcode.com/gh_mirrors/zs/zsxq-spider
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考