
知识星球内容会消失吗我用 zsxq-spider 把所有帖子导出成了一本 PDF 电子书【免费下载链接】zsxq-spider爬取知识星球内容并制作 PDF 电子书。项目地址: https://gitcode.com/gh_mirrors/zs/zsxq-spider加入知识星球的那一刻你大概没想过有一天这些内容会看不到了这个可能性。但现实是账号可能被限制、平台可能改版、星球可能停止更新。与其等那一天到来不如现在就动手把内容抓下来存成 PDF。开源工具 zsxq-spider 正是为此而生——它把知识星球里的帖子、图片和评论整理成排版好的电子书把配置写好之后往后每次运行都是几分钟的事。先从一段真实经历说起两年前我花几百块加入了一个技术星球里面有大量实战笔记和答疑记录。结果上个月到期后才发现这个星球已经停止更新连帖子列表都开始加载缓慢。那一刻我意识到付费买来的不是内容本身而是一段随时可能失效的访问权限。我试着手动备份结果很快放弃了帖子有几百条逐条截图要按到手酸图片还容易糊评论区里的高价值补充内容截起来更是没完没了整理出来的文件东一个西一个根本没法检索和电子书三个字完全不沾边。我需要的是一键把整个星球变成一个文件的方案。搜了一圈最后留下了 zsxq-spider 这个项目跑通之后它的产出确实超出了我的预期。zsxq-spider 到底做了什么简单说它是一个纯 Python 脚本通过知识星球开放的接口按页拉取主题数据把正文、图片、评论整理成 HTML最后借助 wkhtmltopdf 渲染成一份完整 PDF。整个过程里不需要手动复制粘贴任何一条内容。它内部能识别的帖子类型包括提问、发帖、任务、解决方案四类每一条都会以序号 时间命名精华帖还会自动打上标记。如果你留意过知识星球里的各种富文本会发现 提及、话题标签、外链这些元素也都被转成了普通文字或可点击链接不会在 PDF 里显示成一堆乱码。功能点对应开关什么场景下值得调整图片下载并嵌入 PDFDOWLOAD_PICS开着更完整关掉则速度明显提升评论一并打包DOWLOAD_COMMENTS问答型星球建议保留讨论区价值很高只导出精华内容ONLY_DIGESTS内容量大、时间紧时只留精华按时间区间截取FROM_DATE_TO_DATE大批量归档时按年份分批便于管理还有两个容易被忽视的细节一是图片会以 base64 编码直接内嵌进 PDF所以生成的电子书是自带图片的拷到任何设备上都不缺图二是文件附件不会下载只会以列表形式提示你需访问网站下载这是作者刻意保留的行为避免过度抓取。动手前先把三件东西准备好环境准备其实只有三件事每一件都缺一不可组件它负责什么怎么装Python 3.7脚本运行环境官网下载安装即可wkhtmltopdf真正把 HTML 渲染成 PDF 的引擎官网下载后把 bin 目录加入系统 PATHpdfkit / BeautifulSoup4 / requests脚本依赖的 Python 库用 pip 一次性安装这里有个值得注意的点很多人导出失败不是代码问题而是 wkhtmltopdf 没装或者没进 PATH。pdfkit 只是传话筒真正干活的是 wkhtmltopdf这一步务必先验证。git clone https://gitcode.com/gh_mirrors/zs/zsxq-spider cd zsxq-spider pip install pdfkit BeautifulSoup4 requests填写配置三组参数看懂就够crawl.py顶部有一块配置区看着参数很多其实按用途分成三组就非常清晰。第一组告诉脚本你是谁、要去哪访问令牌ZSXQ_ACCESS_TOKEN需要你在浏览器里登录一次知识星球然后在开发者工具的 Cookie 中找到zsxq_access_token字段复制过来。USER_AGENT必须和你登录时用的浏览器一致这两者组合相当于你的门票对不上就会被接口拒之门外。小组 ID 则可以直接从星球地址栏的网址里抄就是group/后面那一串数字。ZSXQ_ACCESS_TOKEN 粘贴浏览器Cookie里的zsxq_access_token USER_AGENT 粘贴你浏览器的User-Agent必须和登录时一致 GROUP_ID 452445212848 # 从星球网址里抄下来的那串数字 PDF_FILE_NAME 我的知识星球备份.pdf第二组决定这次导出什么这一组回答的是要完整归档还是只要一部分。全部打开意味着最完整也最慢如果只是先试水可以把图片下载关掉。DOWLOAD_PICS True # 图片是否下载进PDF开着更慢但更完整 DOWLOAD_COMMENTS True # 评论是否一起打包 ONLY_DIGESTS False # 只想保留精华内容就改成 True FROM_DATE_TO_DATE False # 想按时间段分批导出就改成 True EARLY_DATE 2020-01-01T00:00:00.0000800 # 区间起点留空表示不限制 LATE_DATE 2020-12-31T00:00:00.0000800 # 区间终点留空表示不限制第三组控制节奏和临时文件爬虫的本质是高频访问别人的服务器脚本已经内置了文明模式保持默认即可。调试用的DEBUG和DEBUG_NUM建议第一次跑时打开先导出少量内容验证配置。COUNTS_PER_TIME 30 # 每页拉取的主题数量上限 30 SLEEP_FLAG True # 是否在请求之间休息 SLEEP_SEC 2 # 每次请求间隔 2 秒别给服务器添负担 DEBUG True # 第一次运行建议开 DEBUG 试跑 DEBUG_NUM 30 # 只先处理 30 条验证效果 DELETE_PICS_WHEN_DONE True # 跑完后清理下载的图片 DELETE_HTML_WHEN_DONE True # 跑完后清理中间生成的 HTML运行起来看看它到底在干什么配置完成后在项目目录执行python crawl.py脚本的整个处理流水线大致是这样的拼接接口地址带上 Cookie 请求第一页主题数据返回的 JSON 会先落盘到temp.json方便你随时查看原始数据排查问题逐条解析主题识别类型、提取作者与时间、把富文本里的特殊标签转换成可读内容需要图片时先下载到本地images目录再以 base64 形式塞回 HTML全部主题处理完后交给 wkhtmltopdf 结合temp.css一次性渲染成 PDF按配置自动清理临时文件避免目录越积越乱。终端会实时打印正在请求的地址进度透明可见。如果开了DEBUG处理到设定条数就会停正好用来确认配置有没有写对。电子书好不好看由 temp.css 决定生成的 PDF 样式完全由根目录的temp.css控制。项目默认的排版考虑到了手机端阅读的场景字号偏大目录和正文的层次很清晰/* 标题居中放大一眼就能扫到结构 */ h1 { font-size: 40px; color: red; text-align: center; } /* 正文字号拉大躺着看也不费眼 */ p { font-size: 30px; } /* 图片自适应宽度、居中展示加一点阴影更有质感 */ img { max-width: 100%; margin: 20px auto; display: block; box-shadow: 1px 4px 16px 8px #5CA2BE; }如果你想追求更素雅的风格把h1的颜色改成深灰、字号收到 28px 左右页面数量会明显变少更适合打印或放进文档管理工具。改完直接重新运行一遍脚本即可不需要动任何 Python 代码。三条进阶用法让导出更顺手给大体量星球做时间切片。动辄上千条的星球一次全量导出耗时很长且中途出错不好定位。把FROM_DATE_TO_DATE打开按年份设好起止时间分多次运行每次产出一本当年的电子书出错时也只需重跑对应年份。用精华模式快速沉淀。需要给团队或朋友分享时把ONLY_DIGESTS改成True只导出被标记为精华的内容生成速度和质量都很理想。控制频率做个懂分寸的访客。保持SLEEP_FLAG开启不要为了赶时间把间隔调成 0。知识星球是很多创作者的付费收入来源频繁请求既影响服务稳定性也容易让账号被盯上。容易被忽略的五个坑现象原因处理办法请求返回失败或认证错误Token 失效或 UA 与登录时不一致重新登录复制最新 Token并核对 UA提示电子书生成失败wkhtmltopdf 缺失或不在 PATH安装并配置环境变量先单独验证它能跑通图片下载中断网络波动脚本内部会重试下载耐心等待即可全量导出太久单次请求数据量过大开 DEBUG 试跑再按时间段分批导出内容涉及版权争议随意传播生成的 PDF自用归档没问题转发前先征得作者同意把内容备份成习惯收藏夹会失效会员会到期平台会改版但一本躺在你自己硬盘里的 PDF只要你不删它它就会一直在那里。几百块的星球会员费是小事真正珍贵的是里面沉淀下来的那些讨论、解答和记录——它们不该只存在于别人的服务器上。我的建议是现在就 clone 下这个项目把 Token 和小组 ID 填好开 DEBUG 先跑 30 条。几分钟后你就能拿到第一本属于你自己的电子书。从那天起把每月归档一次当月内容当成例行公事你会发现内容的安全感是任何收藏功能都给不了的。【免费下载链接】zsxq-spider爬取知识星球内容并制作 PDF 电子书。项目地址: https://gitcode.com/gh_mirrors/zs/zsxq-spider创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考