使用浏览器自带功能(最简单直接)
这是最基本、最通用的方法,适用于所有现代浏览器(Chrome, Firefox, Edge, Safari)。

保存整个网页(最完整的方式)
这个方法会下载当前网页的 HTML 文件、文件夹(包含所有图片、CSS、JS等资源),并且可以设置是否保存为“网页,仅HTML”(不含资源)或“网页,完整”(含资源)。
-
操作步骤:
- 打开你想要下载的网页。
- 按下
Ctrl + S(Windows) 或Cmd + S(Mac)。 - 在弹出的“另存为”对话框中:
- 保存类型: 选择 “网页,完整”,这会创建一个
.html文件和一个同名的文件夹,文件夹里包含了所有依赖的资源,这是最推荐的方式,能保证网页离线打开时显示正常。 - 文件名: 输入你想要的文件名。
- 保存位置: 选择你要保存的位置。
- 保存类型: 选择 “网页,完整”,这会创建一个
- 点击“保存”。
-
优点:
- 无需安装任何额外软件。
- 操作简单快捷。
- 最完整,适合离线阅读。
-
缺点:
(图片来源网络,侵删)- 会下载大量你可能不需要的文件(广告、跟踪脚本等)。
- 保存的页面结构可能比较混乱,特别是对于动态加载内容的网站(如单页应用 SPA)。
打印为 PDF(适合阅读和归档)
如果你只想保存网页的,而不关心其交互功能,打印成 PDF 是一个非常好的选择。
-
操作步骤:
- 打开网页。
- 按下
Ctrl + P(Windows) 或Cmd + P(Mac)。 - 在打印预览界面,将 目标 或 打印机 设置为 “另存为 PDF” 或 “Microsoft Print to PDF”。
- 你还可以调整布局(如“横向”或“纵向”)、缩放等选项。
- 点击“保存”。
-
优点:
- 生成格式统一、易于分享的文档。
- 通常会智能地分页,去除页眉页脚等浏览器元素。
- 文件体积相对较小。
-
缺点:
(图片来源网络,侵删)- 无法保存网页的交互功能(如按钮点击、视频播放)。
- 对于复杂的网页,排版可能会有偏差。
使用在线网页下载工具(无需安装)
如果你不想使用浏览器自带功能,或者需要更高级的功能(如批量下载、特定格式转换),可以使用在线工具。
-
一些知名的在线工具:
- WebsiteDownloader.io: 功能强大,可以自定义下载范围(只下载某个路径下的文件)、设置用户代理等。
- DownloadWebsite: 界面简洁,快速下载整个网站。
- SiteSucker: 主要针对 Mac 用户,但有在线版本。
-
使用方法:
- 打开上述任一网站。
- 输入你想要下载的网址。
- 根据提示设置下载选项(如保存格式、路径深度等)。
- 开始下载,工具会打包成一个
.zip文件供你下载。
-
优点:
- 通常提供比浏览器更灵活的选项。
- 无需安装,在浏览器中即可使用。
-
缺点:
- 隐私风险: 你输入的网址会被服务提供商看到。
- 文件大小限制: 大型网站可能无法一次性下载。
- 依赖网络: 速度取决于服务器和网络状况。
- 可能包含广告。
使用代码实现(适合开发者和技术爱好者)
如果你需要高度定制化的下载功能,或者想集成到自己的项目中,使用代码是最佳选择,这里主要介绍使用 Node.js 的方法,因为它非常适合处理网络请求和文件系统操作。
使用 wget 命令(Linux/Mac 或 Windows 上的 Git Bash)
wget 是一个经典的命令行工具,可以递归地下载整个网站。
# 基本用法,下载整个网站 wget -r -p -k -E http://example.com # 参数解释: # -r: 递归下载 # -p: 下载所有必要的文件,以正确显示页面(如图片、CSS) # -k: 将下载的HTML中的链接转换为本地链接 # -E: 将没有扩展名的HTML文件添加 .html 扩展名
使用 Node.js + puppeteer(更强大,可处理动态网页)
很多现代网站是“单页应用”(SPA),内容是通过 JavaScript 动态加载的,传统的 wget 或 axios 无法获取到这些内容。puppeteer 可以模拟一个真实的浏览器,所以可以完美解决这个问题。
步骤:
-
安装 Node.js 和 npm。
-
创建项目并安装 puppeteer:
mkdir my-downloader cd my-downloader npm init -y npm install puppeteer
-
编写下载脚本
download.js:const fs = require('fs').promises; const path = require('path'); const puppeteer = require('puppeteer'); async function downloadWebsite(url, outputDir) { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(url, { waitUntil: 'networkidle2' }); // 等待网络空闲,确保所有资源加载完成 // 获取页面的 HTML const html = await page.content(); // 创建输出目录 await fs.mkdir(outputDir, { recursive: true }); // 保存 HTML 文件 const htmlPath = path.join(outputDir, 'index.html'); await fs.writeFile(htmlPath, html); // 获取所有图片、CSS、JS 等资源的 URL const resources = await page.evaluate(() => { const urls = []; // 获取所有 img, link, script 标签的 src 或 href document.querySelectorAll('img, link, script').forEach(el => { const url = el.src || el.href; if (url && url.startsWith('http')) { urls.push(url); } }); return [...new Set(urls)]; // 去重 }); console.log(`Found ${resources.length} resources to download.`); // 下载资源 for (const resourceUrl of resources) { try { const response = await page.goto(resourceUrl); const buffer = await response.buffer(); const resourcePath = path.join(outputDir, new URL(resourceUrl).pathname); // 确保资源文件的目录存在 await fs.mkdir(path.dirname(resourcePath), { recursive: true }); await fs.writeFile(resourcePath, buffer); console.log(`Downloaded: ${resourceUrl}`); } catch (e) { console.error(`Failed to download ${resourceUrl}:`, e.message); } } await browser.close(); console.log('Website downloaded successfully!'); } // 使用示例 const targetUrl = 'https://example.com'; // 替换成你想下载的网址 const outputDirectory = 'downloaded-site'; downloadWebsite(targetUrl, outputDirectory); -
运行脚本:
node download.js
- 优点:
- 功能最强大: 可以处理任何动态加载的网页。
- 高度可定制: 可以根据需要修改脚本,添加任何逻辑。
- 完全可控: 数据保存在自己的机器上,无隐私泄露风险。
- 缺点:
- 需要编程知识。
- 需要安装环境(Node.js)。
- 对于非常复杂的网站,脚本可能需要更复杂的逻辑来处理。
使用专业桌面软件(功能最全面)
如果你需要经常进行网页下载、归档,或者需要管理大量下载的网站,专业软件是更好的选择。
-
HTTrack Website Copier: 开源、免费、跨平台(Windows, Linux, Mac),功能非常强大,可以配置下载的深度、文件类型、排除规则等,是这类工具的标杆。
-
WebCopy: 另一款优秀的免费工具,界面友好,功能强大。
-
Internet Explorer 的“收藏夹”中的“导入和导出”: 虽然是旧功能,但可以快速保存网页链接和快照。
-
优点:
- 功能极其丰富和专业。
- 通常有图形界面,易于使用。
- 稳定性和性能经过优化。
-
缺点:
- 需要额外安装软件。
- 部分软件可能需要付费才能解锁全部功能。
总结与选择建议
| 方案类型 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 浏览器自带功能 | 偶尔下载单个网页,需要完整离线内容 | 简单、快捷、无需安装 | 可能冗余,对动态网页支持不佳 |
| 在线下载工具 | 不想安装软件,需要快速下载 | 无需安装,操作方便 | 隐私风险,有大小和速度限制 |
| 代码实现 | 开发者、需要高度定制化、处理动态网页 | 功能最强、完全可控、无隐私问题 | 需要编程知识,环境配置稍复杂 |
| 专业桌面软件 | 频繁下载、需要管理大量网站、功能需求高 | 功能全面、稳定、专业 | 需要安装软件,部分可能收费 |
如何选择?
- 普通用户,偶尔下载: 直接用 浏览器自带的
Ctrl+S,保存为“网页,完整”即可。 - 普通用户,只想保存内容阅读: 使用 浏览器打印功能,保存为 PDF。
- 不想装软件,对隐私要求不高: 使用 在线下载工具。
- 开发者/技术爱好者,或需要下载动态网站: 使用 Node.js + Puppeteer 方案。
- 专业人士,或需要批量、精细化管理: 使用 HTTrack 等专业桌面软件。
