如何以编程方式保存网页?

9
我希望能够通过编程的方式保存网页。
我不仅想保存HTML,还希望自动存储所有相关文件(如图片、CSS文件、可能的嵌入式SWF等),并且希望重写链接以便本地浏览。
这个应用的目的是一个个人书签应用程序,其中链接内容被缓存以防止原始副本被删除。
3个回答

7

看一下 wget,特别是 -p 标志。

−p  −−page−requisites
This option causes Wget to download all the files
that are necessary to properly display
a givenHTML  page. Thisincludes such
things as inlined images, sounds, and
referenced stylesheets.

以下命令:
wget -p http://<site>/1.html

将下载page.html及其所需的所有文件。

为什么有人给我点了踩?我的意思是,-1 对我来说并不是很重要,但我想纠正可能存在的任何问题... - Josh
这看起来相当不错,但有时输出的结果与我复制的页面不同。例如,我尝试使用“wget -p” http://ffffound.com/image/3d3795b5447291980a40f3719dea4b5b15ff3ec9 然而,相关的图像原本是横向列表布局,现在变成了一个长的垂直列表,每行一个。为什么? - Joseph Turian

2
在Windows上,你可以将IE作为组件运行并提取所有内容。
另外,你也可以获取Mozilla的源代码。
在Java中,有Lobo。
或者使用commons-httpclient并编写大量代码。

如果您需要在样式表和CSS导入中引用背景图像等内容,则需要一个真实的HTML和CSS解析器。这已经是半个浏览器了,因此最好使用真正的浏览器来完成它。最简单的方法是嵌入IE,或者作为Firefox扩展程序工作。 - bobince

0

你可以尝试使用MHTML格式(这是IE使用的格式)。http://en.wikipedia.org/wiki/MHTML

换句话说,你将会把每个对象(图片、CSS等)下载到你的电脑上,然后通过Base64编码,嵌入到一个单独的文件中。


你想使用哪种编程语言? - Michael Todd
这里有一个使用VB的例子:http://www.codeproject.com/KB/aspnet/aspnethtml2mht.aspx - Michael Todd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接