如何爬取Obsidian Published公开库并获取全部.md格式笔记
Obsidian Publish公开知识库全量Markdown笔记下载方案
普通爬取工具失效原因
Obsidian Publish 采用前端动态加载架构,全库文件列表、笔记内容均通过JavaScript异步请求加载,wget、HTTrack这类不支持JS执行的静态爬取工具只能捕获初始渲染的少量页面内容,无法拿到全量的.md文件路径和对应的笔记内容。
可行实现方案
方案1:浏览器控制台提取(无需额外安装工具,适合单次爬取)
- 打开目标Obsidian Publish站点的任意页面,等待页面完全加载完成,按F12打开开发者工具,切换到「控制台」标签页
- 输入以下代码提取全库所有.md文件的相对路径,执行后控制台会输出所有符合要求的文件路径列表
const allMarkdownFiles = Object.values(window.publish.cache.files) .filter(file => file.path.endsWith('.md')) .map(file => file.path) console.log(allMarkdownFiles)
- 批量构造下载地址:Obsidian Publish的原始Markdown内容请求格式为
https://publish.obsidian.md/[站点标识]/[文件相对路径],以示例站点为例,站点标识为bryan-jenks,对应笔记的下载地址为https://publish.obsidian.md/bryan-jenks/[输出的文件路径],将所有路径批量拼接后可直接用下载工具批量下载,也可直接在控制台补充自动下载脚本批量保存到本地。
方案2:动态爬取脚本(适合批量、定期爬取需求)
使用支持JS渲染的可编程爬取工具(Playwright、Puppeteer等)实现自动化爬取,以Python+Playwright为例,操作步骤如下:
- 安装依赖:执行
pip install playwright,完成后执行playwright install chromium安装内置浏览器 - 脚本逻辑:启动无头浏览器打开目标站点,等待全局
publish对象加载完成,读取全库.md文件路径,逐个请求对应原始内容,按照原库的目录层级保存到本地即可。
注意事项
请确保你的下载行为符合对应公开知识库的版权声明要求,下载内容仅可用于个人学习用途,不得擅自二次传播、商用下载的笔记内容,避免造成侵权。
内容的提问来源于stack exchange,提问作者AMGMNPLK
相关产品推荐
相关产品推荐

