如何以编程方式保存网页?
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 以编程方式将文件附件添加到网页