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

Posted

技术标签:

【中文标题】如何以编程方式保存网页?【英文标题】:How do I save a web page, programmatically? 【发布时间】:2010-12-16 11:33:50 【问题描述】:

我想以编程方式保存网页。

我的意思不仅仅是保存 html。我还想自动存储所有相关文件(图像、CSS 文件,可能是嵌入的 SWF 等),并希望重写链接以供本地浏览。

预期用途是个人书签应用程序,其中链接内容被缓存以防原始副本被删除。

【问题讨论】:

【参考方案1】:

看看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 并没有给我带来太多困扰,因为我想纠正我的答案可能存在的任何问题...... 这看起来不错,只是有时输出看起来与我复制的页面不同。例如,我尝试 'wget -p' ffffound.com/image/3d3795b5447291980a40f3719dea4b5b15ff3ec9 但是,作为水平列表布局的相关图像现在变成了一个长的垂直列表,每行一个。为什么?【参考方案2】:

在 Windows 上:您可以将 IE 作为 com 对象运行并拉出所有内容。

另外,你可以获取Mozilla的源码。

在 Java 中,Lobo。

或者commons-httpclient,写一大堆代码。

【讨论】:

+1 如果您需要样式表和 CSS 导入中引用的背景图像等内容,您需要一个真实的 HTML 和 CSS 解析器。那已经是半个浏览器了,所以你不妨用一个真正的浏览器来做。最容易嵌入 IE,或用作 Firefox 扩展。【参考方案3】:

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

换句话说,您需要将每个对象(图像、css 等)下载到您的计算机,然后通过 Base64 将它们“嵌入”到单个文件中。

【讨论】:

你想用什么编程语言? 这是一个使用VB的:codeproject.com/KB/aspnet/aspnethtml2mht.aspx

以上是关于如何以编程方式保存网页?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CEF WinForms 以编程方式将文件附件添加到网页

你如何以编程方式在 Java 中下载网页

如何通过“ Microsoft打印为PDF”以编程方式将文件和网页打印为PDF?

能把网页中打开的pdf文件直接保存下来而不使用下载吗?

如何将一个网页以及包含的文件全部整站下载到本地电脑里?

怎么快速保存网页