以编程方式将网页保存到静态HTML文件的最佳方法

Nic*_*ams 8 html css python html-parsing

我做的研究越多,前景就越严峻.

我正在尝试使用Python保存平面保存或静态保存网页.这意味着将所有样式合并到内联属性,并将所有链接更改为绝对URL.

我几乎尝试过每个免费的转换网站,api,甚至是github上的库.没有那么令人印象深刻 我可以找到的用于展平样式的最佳python实现是https://github.com/davecranwell/inline-styler.我为Flask稍微调整了一下,但生成的文件并不是很好.以下是它的外观:

在此输入图像描述

显然,它应该看起来更好.这是它应该是什么样子:

https://dzwonsemrish7.cloudfront.net/items/3U302I3Y1H0J1h1Z0t1V/Screen%20Shot%202012-12-19%20at%205.51.44%20PM.png?v=2d0e3d26

这似乎是一场无休止的斗争,处理格式错误的HTML,无法识别的CSS属性,Unicode错误等等.那么有没有人建议更好的方法来做到这一点?我知道我可以去文件 - >保存在我的本地浏览器中,但是当我试图这样做时,并提取一个不太可行的特定xpath.

它看起来像Evernote的网络剪辑器使用iFrames,但这看起来比我想象的要复杂.但至少在Evernote上剪报看起来不错.

can*_*era 2

听起来内联样式可能会破坏你的交易,但如果不是,我建议你再看看 Evernote Web Clipper。桌面应用程序具有用于 Web 剪辑的导出 HTML 功能。正如您对内联样式所期望的那样,输出有点混乱,但我发现标记是已保存页面的可靠表示。

关于内联样式与外部样式,对于这样的事情,如果您正在处理来自不同站点的大量页面,其中类名将具有冲突的样式规则,那么我看不到任何绕过内联的方法。

您提到 Web Clipper 使用 iFrame,但我还没有发现 HTML 输出的情况如此。如果您要在另一个网站上重新发布(我认为从法律上讲),您可能必须将静态页面嵌入为 iFrame,但否则这不应该成为问题。

一些自动化肯定会有所帮助,这样您就可以直接从浏览器转到 HTML 输出,也许还可以将保存的图像重新定位到单个存储库,并在 HTML 中更新 src 链接。如果您最终从事类似的工作,我将很高兴亲自尝试一下。