我想保存一个包含 javascript 的网站(如果有帮助,该网站是 vyou.com;这是一个指向Andrew WK用户页面的链接),它更新用户在网站上看到的内容。我想做的是在用户视频答案的链接列表完全展开后保存网站。我不打算也保存这些链接指向的视频,我只想保存我的浏览器所处的状态。我使用什么浏览器对我来说并不重要。
有没有人做过类似的事情或知道如何做到这一点?
您保存的文件与您保存的实时网站不完全相同的原因(至少)有两个:
例如,假设您查看页面:
http://example.com/something/index.php
Run Code Online (Sandbox Code Playgroud)
在该页面上,是一个图像文件的“相对”链接:
"../images/picture.jpg"
Run Code Online (Sandbox Code Playgroud)
该页面上还有一个指向 .css 文件的“相对”链接:
"../css/style.css"
Run Code Online (Sandbox Code Playgroud)
因此,当您为页面保存“.html”文件时,它包含这些“相对”链接。当您在浏览器中打开保存的页面时,它会在您保存 .html 文件的文件夹中查找这些图像和 css 文件。如果这些图像和 css 文件不在您保存 .html 文件的文件夹中,则页面将无法正常显示。
你可以做一些事情来“解决”这个问题。
File-->Save as...-->Webpage, complete将网页保存到计算机时选择(或类似的措辞)。这将在您的计算机上保存图像和 .css/.js 文件的副本,并修改保存的 html 文件中的链接以指向您计算机上的图像/文件。这不是“万无一失”。似乎这个过程会经常“错过”一些文件。在这种情况下,您必须手动定位并下载丢失的文件,并手动编辑您保存的 html 文件中的链接以“指向”保存在您计算机上的文件。将“base href...”行添加到<head>已保存的 html 文件副本中的部分。以上面的 URL 为例:
http://example.com/something/index.php
Run Code Online (Sandbox Code Playgroud)
从网页 URL 中删除“index.php”为您提供:
http://example.com/something/
Run Code Online (Sandbox Code Playgroud)
将此添加到网页已保存副本的 <head> 部分,如下所示:
<头> <base href="http://example.com/something/"> <...> <...> </头> ...
编辑(2013-04-04):
使用 Internet Explorer 保存页面的最佳方式(可能并不完美)同时保存页面上 JavaScript 的“结果”,是使用Microsoft Developer Tools,然后查看并保存页面的 DOM 源。
我说“也许不完美”......
假设您有一个网页,该网页使用 JavaScript 来“生成”将图像添加到网页的 HTML 代码。
如果您在线查看网页,您将看到图像。如果您查看页面源代码 ( View-->Source) 或将页面源代码保存到文件 ( File->Save as...),您将看到 JavaScript,但不会看到 HTML<img...>代码。
现在,如果您使用开发者工具查看并保存页面的 DOM 源,然后在文本编辑器中打开保存的文件,您将看到原始 JavaScript 包含在保存的文件中,然后在 JavaScript 下方,您将查看<img...>由 JavaScript 生成的代码。
然后,如果您在浏览器中打开保存的页面,您将看到该图像两次。这是因为当您打开保存的页面时,JavaScript 将再次执行并生成显示图像的代码,其下方是保存到文件中的图像的 HTML 代码。
您可以通过编辑保存的 DOM 源来“修复”这个问题,然后删除(或注释掉)JavaScript。然后,当您在浏览器中打开保存的页面时,您只会看到该图像一次。
从浏览器保存包含相关链接的网页似乎有些混乱,所以我决定提供一个工作示例。
这是我创建的一个网页来演示这一点:
瀑布灯塔图片
这是该页面的 HTML 代码:
<html>
<头>
<title>瀑布和灯塔</title>
</头>
<身体>
<img src="../images/imagesCAIPHDL5.jpg" /><br />
<br /><hr align="left" width="284" /><br />
<script type="text/javascript">document.write("\n"+'<img src="../images/imagesCAG7M85E.jpg" /><br />');</script>
</正文>
</html>
如果您使用浏览器查看页面(我使用的是 IE9),您将正确看到预期的网页,有 2 张图片。
查看页面时,您可以通过单击:View-->Source或单击
来保存页面源File-->Save as...-->Webpage, HTML only。然后保存文件。无论哪种方式,您都将获得相同的 HTML 代码:
<html>
<头>
<title>瀑布和灯塔</title>
</头>
<身体>
<img src="../images/imagesCAIPHDL5.jpg" /><br />
<br /><hr align="left" width="284" /><br />
<script type="text/javascript">document.write("\n"+'<img src="../images/imagesCAG7M85E.jpg" /><br />');</script>
</正文>
</html>
但是,如果您在浏览器中查看保存的文件,您将看到一个空白页面,没有图片。这是因为保存文件中的图片链接,和 JavaScript 编写的图片链接都是“相对”链接……浏览器无法分辨图片所在的域或路径。你可以在这里看到它的样子:
View-Source
HTML-only
如果您编辑此保存的文件并添加以下行:
<base href="http://viewthis.info/superuser577187/page/">
该文件将如下所示:
<html>
<头>
<title>瀑布和灯塔</title>
<base href="http://viewthis.info/superuser577187/page/">
</头>
<身体>
<img src="../images/imagesCAIPHDL5.jpg" /><br />
<br /><hr align="left" width="284" /><br />
<script type="text/javascript">document.write("\n"+'<img src="../images/imagesCAG7M85E.jpg" /><br />');</script>
</正文>
</html>
现在,如果您在浏览器中查看编辑后的文件,您将获得一个页面,其中两张图片都显示正确。这是因为“base href”行告诉浏览器在哪里查找(域和路径)“丢失”的图片。你可以在这里看到它的样子:
Source-with-base-href
在线查看页面时,您还可以通过点击: 保存页面来源
File-->Save as...-->Webpage, complete。
如果您查看此已保存文件的源代码,您将看到以下 HTML 代码:
<!-- 保存自 url=(0042)http://viewthis.info/superuser577187/page/ -->
<html>
<头>
<title>瀑布和灯塔</title>
<meta content="text/html; charset=windows-1252" http-equiv=Content-Type>
<meta name=GENERATOR content="MSHTML 9.00.8112.16470">
</头>
<身体>
<img src="Waterfall-and-Lighthouse_files/imagesCAIPHDL5.jpg" /><br />
<br /><hr align=left width=284 /><br />
<script type=text/javascript>document.write("\n"+'<img src="../images/imagesCAG7M85E.jpg" /><br />');</script>
</正文>
</html>
如果您在浏览器中查看此保存的文件,您将获得一个页面,其中第一张(顶部)图片正确显示,但第二张图片未显示(丢失)。这是因为使用 保存时Webpage, complete,浏览器会在您的硬盘驱动器上保存第一张图像的副本,并修改保存文件中的链接以指向该图像的本地副本。保存的文件中不存在第二张图片的图像链接。创建第二个图像链接的 JavaScript 代码保存在文件中,但实际链接不是页面源的一部分,因此不会保存第二个图像链接,也不会保存第二个图像文件。
同样,如果您编辑此保存的文件并添加以下行:
<base href="http://viewthis.info/superuser577187/page/">
然后在浏览器中查看编辑后的文件,你会得到一个页面,两张图片都显示正确。
在线查看页面时保存页面的另一种方法是单击:
File-->Save as...-->Web Archive, single file-->Save。
如果您在浏览器中查看这个保存的文件,您将获得一个页面,其中两张图片都显示正确。这是因为“存档”格式将第一张图像保存在存档文件(编码)中,并保存网页(和域名/路径)和第二张图像文件所在的网址。
在所有这些示例情况下,JavaScript 的“结果”(处理 JavaScript 后页面的当前状态),即第二个图像链接,不包含在保存的文件中,只保存了 JavaScript。
请记住,在这些示例中,JavaScript 的“结果”非常“简单”,几乎是 JavaScript 的“微不足道”使用。在“真实”网页中,JavaScript 可能非常复杂,并且可以生成许多页面(仅受可用内存量的限制)。
现在,如何使用来自 JavaScript 的“结果”保存页面。我们将使用 Microsoft Developer Tools 执行此操作(本答案前面显示了下载链接)。
安装开发者工具后,在线查看页面时,按F12键或单击:
Tools-->F12 Developer Tools
然后在打开的窗口中,单击:
View-->Source-->DOM (page)。
一个新窗口打开。单击File-->Save,然后保存文件。
如果您查看此已保存文件的源代码,您将看到以下 HTML 代码:
<html>
<头>
<title>瀑布和灯塔</title>
</头>
<身体>
<img src="../images/imagesCAIPHDL5.jpg" /><br />
<br /><hr width="284" align="left" /><br />
<script type="text/javascript">
document.write("\n"+'<img src="../images/imagesCAG7M85E.jpg" /><br />');
</脚本>
<img src="../images/imagesCAG7M85E.jpg" /><br />
</正文>
</html>
请注意,在此保存文件的源代码中,您将看到 JavaScript 已保存,并且 JavaScript 的“结果”也已保存:
...
<script type="text/javascript">
document.write("\n"+'<img src="../images/imagesCAG7M85E.jpg" /><br />');
</脚本>
<img src="../images/imagesCAG7M85E.jpg" /><br />
...
我想这就是你想要的。但是,有两个问题。
首先,和以前一样,如果您在浏览器中查看这个保存的文件,您将看到一个空白页面,没有图片。这是因为保存文件中的图像链接是“相对”链接……浏览器无法告诉在哪里可以找到图片的域或路径。你可以在这里看到它的样子:
DevTools-DOM
同样,如果您编辑此保存的文件并添加以下行:
<base href="http://viewthis.info/superuser577187/page/">
然后在浏览器中查看编辑后的文件,您将获得显示两张图片的页面。你可以在这里看到它的样子:
DevTools-DOM-with-base-href
在这里你会注意到第二个问题。第一个图像(瀑布)正确显示(一次),但第二个图像(灯塔)显示了两次。这是因为在加载保存的页面时,JavaScript 再次执行,为第二张图片生成图片链接,并且第二张图片的图片链接也保存在文件中。
要解决这个问题,您需要再次编辑保存的文件,并删除 JavaScript(删除<script...> and </script>标签和它们之间的所有内容)。现在,编辑后的
文件的来源如下所示:
<html> <头> <title>瀑布和灯塔</title> <base href="http://viewthis.info/superuser577187/page/"> </头> <身体> <img src="../images/imagesCAIPHDL5.jpg" /><br /> <br /><hr width="284" align="left" /><br /> <img src="../images/imagesCAG7M85E.jpg" /><br /> </正文> </html>
现在,保存的文件包含您想要的 JavaScript 的“结果”,如果您在浏览器中查看编辑后的文件,您将获得一个页面,其中只有两张图片中的一张,并且显示正确。你可以在这里看到它的样子:
DevTools-DOM-Final
现在,这一切看起来可能很复杂,但实际上并不......
下载并安装开发人员工具后,只需 4 个相当简单的步骤...在查看(在浏览器中)您要保存的页面时:
F12键或单击:Tools-->F12 Developer Tools View-->Source-->DOM (page)。 File-->Save,然后保存文件。 <script...> ... </script>| 归档时间: |
|
| 查看次数: |
19345 次 |
| 最近记录: |