📌 项目地址:AhmadIbrahiim/Website-downloader | ⭐ 3,817 颗星 | 🔧 HTML | 📜 未标注
为什么你需要一个网站下载器?
本地备份网站、离线查看教程、迁移静态站点、甚至分析前端资源结构——这些场景下,你需要的不是普通爬虫,而是一个能完整镜像整个网站(包括 CSS、JS、图片、字体等所有依赖)的工具。手动用 wget 记住一堆参数很麻烦,还要处理压缩和传输。
Website-downloader 把这一切封装成一行命令启动的 Web 服务,你只需输入网址,就能拿到一个完整的网站压缩包。
实际用法:从 clone 到下载
项目基于 Node.js,核心原理是用 wget 的镜像模式抓取网站,再用 archiver 打包成 ZIP,通过 WebSocket 实时推送给前端。
本地运行步骤(来自 README)
git clone https://github.com/AhmadIbrahiim/Website-downloader.git
cd Website-downloader
npm install
npm start
启动后访问 http://localhost:3000/,输入目标网址,点击下载即可。
背后的魔力:wget 参数详解
项目中使用的 wget 命令:
wget --mirror --convert-links --adjust-extension --page-requisites --no-parent http://example.org
--mirror:递归下载,适合镜像整个站点。--convert-links:将页面中的链接(包括 CSS 中的资源路径)转换为相对路径,以便离线浏览。--adjust-extension:根据文件内容添加合适的扩展名(例如没有.html的文件自动加上.html)。--page-requisites:下载页面所需的所有资源(样式表、图片、脚本等),这是保证离线完整显示的关键。--no-parent:不爬取上级目录,限制在指定域名范围内。
在线体验和云部署
项目还提供了一个在线演示(虽然可能有资源限制):
👉 https://website-downloader.onrender.com
如果你不想本地安装,可以直接一键部署到以下平台(来自 README):
– Replit
– Glitch
– Railway
– Cyclic
– Koyeb
– Render
和直接用 wget 相比有什么区别?
直接用 wget 也能实现类似功能,但 Website-downloader 提供了两个明显优势:
1. Web 界面:无需记忆复杂参数,输入网址即可。
2. 实时打包下载:抓取完成后自动压缩为 ZIP,并通过 socket 推送进度,用户体验更友好。
如果你需要批量或自动化下载,wget 脚本更灵活;但如果只是偶尔需要下载某个网站拿到本地,这个项目更快捷。
注意事项
- 依赖系统
wget:Node.js 只是调度层,实际下载仍依赖系统中安装的wget命令。Linux/macOS 通常自带,Windows 需要手动安装(如通过 Chocolatey 或 WSL)。 - 大型网站慎用:递归下载整个网站可能产生大量请求,消耗带宽和时间,请遵守
robots.txt以及目标网站的版权规定。 - 安全提醒:不要用此工具下载需要登录或包含敏感信息的网站,wget 默认不处理 Cookie/会话。
- 项目状态:Star 数 3817,但最后更新可能不频繁(检查提交记录),不过核心逻辑基于稳定工具
wget,短期内问题不大。
总结
如果你需要一个开箱即用、带 UI 的网站离线下载器,Website-downloader 是很好的选择。它把 wget 的强大能力和现代 Web 交互结合起来,部署也极其简单。项目代码量不大,感兴趣也可以研究其 Node.js 实现,甚至自己扩展功能(比如支持更多 wget 参数)。