用 curl/wget 只能获取服务器返回的初始 HTML,不执行 JavaScript;若需 JS 渲染后内容,必须用 monolith 或 headless Chromium 等基于浏览器的工具。

直接用 curl 或 wget 就能拿到原始 HTML 源码,但要注意:它们只返回服务器发来的初始 HTML,不执行 JavaScript,也不处理重定向或登录态——这点和浏览器“查看源代码”一致,但和“Elements 面板里复制 outerHTML”完全不同。
用 curl 保存原始 HTML 最常用
适用于大多数静态页面,命令简洁、无依赖、结果可预测:
-
curl -o page.html https://example.com:最基础写法,保存为page.html -
curl -L -o page.html https://example.com:加-L跟随 HTTP 重定向(比如跳转到带 www 的域名) -
curl -H "User-Agent: Mozilla/5.0" -o page.html https://example.com:某些网站会屏蔽默认curlUA,加个常见 UA 可绕过简单拦截 - 如果页面返回乱码,大概率是编码问题,先用
curl -I https://example.com查Content-Type响应头,确认是否含charset=utf-8;保存后用file -i page.html验证实际编码
wget 也能做,但默认行为容易踩坑
wget 更倾向“下载整个网页资源”,不是单纯取 HTML,所以得关掉多余行为:
-
wget --no-parent -O page.html https://example.com:关键在-O(大写 O),强制输出到指定文件;--no-parent防止它顺着../往上爬目录 - 别用
wget https://example.com不加-O:它会默认存成index.html.1这类带编号的文件,且可能自动创建同名目录 -
wget默认会尝试解析并下载<link>、<script></script>等标签指向的资源,除非加--no-html-extension和--restrict-file-names=windows等参数压制,否则结果不可控
需要保存 JS 渲染后的内容?curl/wget 不行,得换工具
如果你看到的页面内容是 JavaScript 动态插入的(比如 React/Vue 应用、无限滚动列表、登录后才显示的数据),curl 和 wget 返回的 HTML 里根本没这些内容——它们拿不到 DOM 树,只拿得到初始空壳。
立即学习“前端免费学习笔记(深入)”;
- 这时候必须用基于浏览器的工具,比如
monolith:monolith https://example.com -o full.html,它会启动 Chromium 渲染后再抓取完整 DOM - 或者手动用 Chromium headless:
chromium --headless --dump-dom https://example.com > page.html(需确保已安装chromium命令) - 注意:
monolith默认把所有 CSS/JS/图片转成 data URL 嵌入,生成的文件可能很大;如只需纯 HTML 结构,加-c -j -i参数禁用嵌入
真正容易被忽略的是:**你到底要“服务端返回的 HTML”,还是“浏览器最终渲染出的 HTML”?** 前者用 curl 最稳,后者必须走渲染引擎。选错工具,后面所有解析、调试、存档都会跑偏。



















