# 领航 **Repository Path**: deepin20/NavPilot ## Basic Information - **Project Name**: 领航 - **Description**: 领航 · NavPilot:从每一个导航站,把网址领回家。一款多站点导航抓取工具,一键导出"归航"可导入的 JSON 书签。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-16 - **Last Updated**: 2026-09-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 领航 · NavPilot > 从每一个导航站,把网址领回家。 一款多站点导航抓取工具,一键导出"归航"可导入的 JSON 书签。 --- ## 支持的站点(16 个) | 站点 | 抓取方式 | 类型 | |---|---|---| | 上班人导航 | OneNav 老版 · 浏览器 | 导航 | | 办公人导航 | OneNav 2 新版 · 浏览器 | 导航 | | hao123 导航 | 静态 HTML · 浏览器 | 导航 | | 360 导航 | 动态渲染 · 浏览器 | 导航 | | 2345 网址导航 | 静态 HTML · 浏览器 | 导航 | | 自定义 OneNav 站点 | OneNav 通用 · 浏览器 | 导航 | | 优设导航 | WebStack 通用 · 浏览器 | 设计 | | 设计导航 | WebStack 通用 · 浏览器 | 设计 | | 爱达杂货铺 | 浏览器 | 资源 | | AIGC导航 | OneNav 复用 · 浏览器 | AI | | 毒霸网址大全 | 静态 HTML · 免浏览器 | 导航 | | UC导航 | 静态 HTML · 浏览器 | 导航 | | RSS导航 | 公开 JSON API · 免浏览器 | 开发 | | 发现导航 | LZ-string 压缩数据源 · 免浏览器 | 开发 | | Linux265 | 静态 HTML + /go/ 解码 · 免浏览器 | Linux | | TuxNav | 静态单页 · 免浏览器 | Linux | > "免浏览器"表示 requests 直接抓取静态页 / 接口,不启动 Chromium, > 速度更快、更稳定。 --- ## 安装(Debian / Deepin / Ubuntu) ```bash # 构建安装包 ./packaging/build_deb.sh # 可选:./packaging/build_deb.sh 1.0.3 2 # 指定版本与修订号 # ./packaging/build_deb.sh --no-lintian # 安装 sudo apt install ./dist/navpilot_1.0.3-1_all.deb ``` 安装后: ```bash navpilot # 图形界面(应用菜单里也有「领航 NavPilot」) navpilot all # 命令行:一键抓取全部站点并合并导出 navpilot cli -o ~/书签 # 命令行:抓单个站点 navpilot --status # 查看运行环境状态 navpilot --repair # 重建运行环境(Playwright/Chromium 损坏时) man navpilot # 手册页 ``` **首次运行**会自动在 `~/.local/share/navpilot/venv` 建立隔离环境(带 `--system-site-packages`,复用 apt 的 PyQt5),并下载 Playwright 的 Chromium 内核(约 150MB,仅一次)——图形界面会弹出进度窗口,全程可视化。 运行环境不写入系统 Python;卸载包时用户数据(venv / Chromium / 输出书签) 会保留,`purge` 时会提示手动清理路径。 **安装布局**:`/usr/share/navpilot/`(程序本体)、`/usr/bin/navpilot` (启动器)、`/usr/share/applications/`(两个桌面入口:GUI 与一键抓取全部)、 `/usr/share/icons/hicolor/`(16–512px 图标)、`/usr/share/man/man1/`、 `/usr/share/doc/navpilot/`。 **环境变量**:`NAVPILOT_OUTPUT`(输出目录,默认 `~/NavPilot书签`)、 `NAVPILOT_APP_DIR`、`NAVPILOT_PIP_INDEX`、`NAVPILOT_PW_MIRROR`。 --- ## 快速开始(源码运行) ```bash # 1. 一键安装依赖并启动 GUI chmod +x run_scraper.sh ./run_scraper.sh # 2. CLI 抓取(上班人导航) ./run_scraper.sh --cli -o output # 3. 一键抓取全部站点并合并导出 python3 scrape_all.py --output output # 可选:--only duba,hao123 只抓指定站点 # --no-headless 显示浏览器窗口 ``` GUI 中也可直接点击"🌐 一键抓取全部"。 --- ## 一键抓取全部 `scrape_all.py` 会依次抓取全部注册站点(自定义站除外,需手动填 URL): 1. 每个站点独立输出到 `output/<站点key>/`,互不覆盖 2. 跨站点按归一化 URL 去重(剥 fragment / 跟踪参数) 3. 合并导出到 `output/` 根目录: | 文件 | 说明 | |---|---| | `bookmarks_all_nested.json` | 归航可导入:主分类分组,子分类写入 description | | `bookmarks_all_flat.json` | 扁平备份(name/url/main_category/category) | | `bookmarks_all_summary.json` | 抓取摘要:各站条数、耗时、错误 | --- ## 依赖 - Python 3.8+ - Playwright + Chromium(浏览器型站点) - requests(免浏览器型站点) - PyQt5(GUI)或 PySide6 ```bash pip install -r requirements.txt python3 -m playwright install chromium ``` --- ## 输出格式 单站抓取完成后,`output/`(或一键抓取时的 `output/<站点key>/`)下会生成: - `bookmarks_nested.json` — 归航可导入的嵌套书签 - `bookmarks_flat.json` — 扁平结构备份 断点文件 `.checkpoint_*.json` 在抓取成功后会自动删除。 --- ## 项目结构 ``` . ├── run_scraper.sh 一键启动(自动装依赖) ├── scrape_gui.py GUI 入口(含"一键抓取全部") ├── scrape_all.py 一键抓取全部站点 + 合并导出(CLI) ├── scrape_sbrdh.py CLI:上班人导航 ├── init_project.py 项目脚手架 ├── packaging/ Debian 打包工程 │ ├── build_deb.sh 一键构建 .deb(含 lintian 检查) │ ├── navpilot-boot.py 安装版运行时引导(venv + Playwright + Chromium) │ ├── navpilot 启动器(装到 /usr/bin/navpilot) │ ├── navpilot.1 手册页 │ ├── navpilot.svg 应用图标(构建时生成多尺寸 PNG) │ ├── *.desktop 桌面入口 │ └── debian/ control / postinst / postrm / copyright / changelog ├── scrapers/ 抓取器核心包 │ ├── base.py 抽象基类(USE_BROWSER 免浏览器开关) │ ├── registry.py @register 装饰器注册表 │ ├── utils.py URL 清洗工具 │ ├── onenav.py OneNav / OneNav2 通用 │ ├── hao123.py hao123 导航 │ ├── nav360.py 360 导航 │ ├── nav2345.py 2345 网址导航 │ ├── webstack.py WebStack 类通用(优设 / 设计导航) │ ├── ai_tools.py 爱达杂货铺 │ ├── legacy_nav.py 老牌导航通用(UC导航等) │ ├── duba.py 毒霸网址大全(免浏览器) │ ├── rssink.py RSS导航(JSON API,免浏览器) │ ├── linux265.py Linux265(免浏览器) │ ├── tuxnav.py TuxNav(免浏览器) │ └── discover_nav.py 发现导航(LZ-string 解压,免浏览器) ├── tests/ pytest 回归测试 ├── docs/ 详细文档 ├── output/ 默认输出目录 └── dist/ 打包产物(*.deb) ``` --- ## 开发 ```bash # 运行测试 python3 -m pytest tests/ -v # 干跑脚手架(不落盘) python3 init_project.py --dry-run --tree # 打包(版本号自动取 CHANGELOG 顶部条目,可用参数覆盖) ./packaging/build_deb.sh ``` 打包依赖:`dpkg-dev`、`lintian`(可选)、`librsvg2-bin` 或 `imagemagick` (生成图标)。抓取器数量会自动写入包描述,无需手工维护。 --- ## 许可 [MIT](LICENSE)