最可靠方式是通过浏览器“查看页面源代码”(ctrl+u/cmd+option+u)进入view-source:页面后手动另存为,选“html only”或“page source”,保存为.html文件并确保utf-8编码;elements面板内容为渲染后dom,非原始源码;禁用右键时可用curl/wget;python中建议用response.content直接保存避免编码错误,并注意反爬与协议限制。

直接保存网页的原始 HTML 源码,最可靠的方式是通过浏览器的「查看页面源代码」页面 + 手动另存为,而不是在原网页标签页里点“另存为”。否则你大概率拿到的是渲染后的 DOM(含 JS 插入内容),不是服务器返回的真实源码。
怎么从浏览器拿到原始 HTML 源码
关键动作必须在「源代码页面」完成:按 Ctrl+U(Windows/Linux)或 Cmd+Option+U(macOS)打开源码视图;此时地址栏显示的是 view-source:https://...;在这个页面里按 Ctrl+S(或菜单栏「文件 → 另存为」)。
- 保存类型选「Web Page, HTML Only」(Chrome/Edge)或「Page Source」(Firefox),别选「Web Archive」或「Complete」——那会生成一堆文件夹
- 文件名务必以
.html或.htm结尾,例如backup.html - 编码默认是 UTF-8,不用改;但如果你用记事本保存,一定要手动在「编码」下拉框里选
UTF-8,否则中文会乱码
为什么 Elements 面板复制的不是原始源码
开发者工具的 Elements 面板显示的是当前 DOM 树,已经过 JavaScript 修改、补全、动态插入。比如 SPA 页面初始 HTML 可能只有 <div id="app"></div>,但 Elements 里看到的是完整渲染后的内容。
- 要原始源码,只能从
view-source:页面或Network面板里找Doc类型请求,右键 →Save as - 如果网站禁用了
F12或屏蔽右键,curl是更稳的选择:curl -o page.html https://example.com -
wget要下载完整资源(CSS/JS/图片),得加--page-requisites参数,否则只存 HTML 文件
用 Python 脚本保存 HTML 源码要注意什么
用 requests.get() 获取响应后,不能直接写入文件而不处理编码。HTTP 响应头里的 charset 可能和实际内容不一致,尤其遇到 GBK 编码的中文站点。
- 推荐显式指定编码:
response.encoding = response.apparent_encoding或手动设为'utf-8'再取.text - 更稳妥的做法是用
response.content(bytes)直接写入文件,避免解码错误 - 记得检查
response.status_code == 200,有些网站会返回 403 或 503 却不报错 - 若目标页面有反爬,需加
headers={'User-Agent': '...'},否则requests默认 UA 会被拦截
真正容易被忽略的点是协议限制:用 file:// 直接双击打开本地 HTML 文件时,浏览器会禁用跨域请求、部分 API(如 fetch)、甚至本地 XMLHttpRequest。如果源码里有相对路径的 JS/CSS,且你没把它们一并下载到同目录,页面大概率白屏或样式丢失。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











