一个面向文档站离线化的 Python 工具:
抓取源站文档 → 输出 Markdown → 构建本地 HTML 文档站(左侧导航 + 右侧正文)。
- 支持抓取常见文档站(VitePress / Docusaurus 结构)
- 支持多文档根路径自动识别(如
/guide、/components) - 支持“根路径 404,但叶子文档可访问”的站点结构
- 导航结构尽量贴近源站层级(一级/二级)
- 详细日志与保活输出(当前阶段、URL、进度、速率、ETA)
- 一键预览本地 HTML 文档站
- 输出标准 Markdown 目录,便于后续二次加工
- 文档站离线备份
- 内网镜像阅读
- 文档迁移与归档
- 导航结构和正文内容对照审查
- Python 3.10+
- Windows PowerShell(推荐)或 CMD
仓库内提供模板配置:crawler_config.template.json。
Copy-Item crawler_config.template.json crawler_config.json编辑 crawler_config.json(关键字段):
target.base_url:目标站点域名(例如https://docs.example.com)target.seed_path:入口路径(通常留空)target.docs_root:文档根路径(可留空)
crawler_config.json已加入.gitignore,默认不提交到仓库。
run_crawler.bat菜单:
1抓取并构建站点2预览本地站点3查看状态0退出
# 初始化工作目录
python docs_crawler.py --config crawler_config.json init
# 仅抓取
python docs_crawler.py --config crawler_config.json crawl
# 仅构建本地站点
python docs_crawler.py --config crawler_config.json build-site --menu-mode nav
# 抓取 + 构建(推荐)
python docs_crawler.py --config crawler_config.json run
# 本地预览
python docs_crawler.py --config crawler_config.json preview --port 8777"docs_root": "/guide"适合你明确知道文档主路径时使用。
"docs_root": ""程序会自动探测多个文档根路径并合并抓取。
也兼容如下情况:
/components/返回 404- 但
/components/xxx.html可访问(会自动纳入抓取)
默认输出到 .site_sync/:
source_md/:抓取后的 Markdown 源文件manifests/source_manifest.json:抓取清单source_site/index.html:本地预览入口source_site/docs/...:预览站点引用的 md 文件reports/:抓取/构建报告
--max-docs N:仅抓取前 N 篇(调试时非常有用)--menu-mode nav:仅保留导航中出现的文档(推荐)--menu-mode all:展示所有抓取到的文档
示例:
python docs_crawler.py --config crawler_config.json run --max-docs 20按顺序执行:
python docs_crawler.py --config crawler_config.json run
python docs_crawler.py --config crawler_config.json preview --port 8777浏览器使用 Ctrl + F5 强制刷新。
- 先执行一次完整
run,不要只preview - 确认使用了最新构建产物(
source_site/index.html)
Windows 下建议在 UTF-8 终端运行,或使用 PowerShell 7。
python -m unittest discover -s tests -p "test_*.py" -v本项目聚焦于“文档抓取 + 本地文档站生成”两件事,
不绑定特定产品,不依赖登录态,适合作为通用文档镜像工具的基础版本。

