我想将当前的 DOM 转储到一个文件中并能够离线查看它。本质上,我有一个过时的页面版本,我想保留它以进行比较。一旦我关闭浏览器,我就会丢失它,所以我想将 DOM 原样保存。
在 Firefox 中执行此操作已经有了答案,但我如何在 Chrome 中执行此操作?
我想将当前的 DOM 转储到一个文件中并能够离线查看它。本质上,我有一个过时的页面版本,我想保留它以进行比较。一旦我关闭浏览器,我就会丢失它,所以我想将 DOM 原样保存。
在 Firefox 中执行此操作已经有了答案,但我如何在 Chrome 中执行此操作?
使用 Web Inspector (F12),转到 Elements 选项卡,右键单击<html>
代码中的标记并选择Copy
-> Copy outerHTML
。然后将其粘贴到新文件中并保存。
使用较新版本的 Chrome 很容易做到这一点:
google-chrome --headless --dump-dom 'http://www.yahoo.com'
(OP 可能没有一直在寻找命令行解决方案,但是在搜索时此搜索结果看起来很高,因此其他人可能会觉得它很有用)
我最喜欢的方法是:
docker run -it --rm --name chrome --shm-size=1024m --cap-add=SYS_ADMIN --entrypoint=/usr/bin/google-chrome-unstable yukinying/chrome-headless-browser --headless --disable-gpu --dump-dom https://www.facebook.com
如果您不熟悉 Docker 的工作原理,请耐心等待 - 第一次会很慢,但后续调用会很快。
其他信息
经测试
Ubuntu 16
Linux intel-nuc 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
码头工人版本:
Docker version 1.10.3, build 20f81dd
Mac OS X 塞拉利昂
Darwin MacBook-Pro.local 16.7.0 Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64 x86_64 i386 MacBookPro14,3 Darwin
码头工人版本:
Docker version 17.06.1-ce, build 874a737
如果您安装tidy
,您也可以缩进 HTML。
在 Chrome 开发工具控制台中,键入document.documentElement.outerHTML
(使用选项卡按钮自动完成以保存击键)并按 Enter 以查看显示的 DOM 文本。要将其复制到剪贴板并将其粘贴到其他位置,请copy(document.documentElement.outerHTML)
改用。
Damon 的回答也不错(在 Dev Tools 中,单击 Elements,右键单击<html>
,单击 Copy > Copy outerHTML),但我发现 Console 命令更容易。
我目前使用的 Chrome 版本为 53.0.2785.113 m。其他答案似乎不再有效。要正确复制所有子/后代元素,用户现在必须右键单击,<html>
然后在复制前单击“全部展开”。否则,您将不会递归复制所有元素。正常的 Ctrl+C 将复制<html>
已展开的所有内容。