将网页的工作本地副本作为单个html文件下载

时间:2017-04-10 16:12:13

标签: download wget offline-browsing

我按照此previous post中提供的说明操作。我可以下载网页的工作本地副本(例如wget -p -k https://shapeshed.com/unix-wget/),但我想将所有文件(js,css和图像,例如使用base64编码)集成到一个html文件中(或其他方便的格式) )。这可能吗?

4 个答案:

答案 0 :(得分:2)

当然可以做到。但是你必须手动完成几件简单的事情,因为没有可用的工具来自动执行某些步骤。

  1. 使用包含所有依赖项的Wget下载网页。
  2. 将链接的样式表和脚本的内容复制到主HTML文件。
  3. Convert images to Base64 data URIs包含在HTML和CSS中,然后将它们插入到主HTML文件中。
  4. Minify the edited HTML file
  5. Convert HTML file to Base64 data URI
  6. 下面是一个单页应用程序的示例,该应用程序编码为Base64数据URI,用于演示该概念(将代码复制并粘贴到Web浏览器地址栏):

    data:text/html;charset=utf-8;base64,PCFkb2N0eXBlIGh0bWw+DQo8aHRtbCBsYW5nPSJlbiI+DQoJPG1ldGEgY2hhcnNldD0idXRmLTgiPg0KCTx0aXRsZT5TaW5nbGUtcGFnZSBBcHBsaWNhdGlvbiBFeGFtcGxlPC90aXRsZT4NCgk8c3R5bGU+DQoJCS8qIENvZGUgZnJvbSBDU1MgZmlsZXMgZ29lcyBoZXJlLiAqLw0KCQlib2R5IHsNCgkJCWZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOw0KCQl9DQoJCWJ1dHRvbiB7DQoJCQlkaXNwbGF5OiBibG9jaw0KCQl9DQoJPC9zdHlsZT4NCgk8c2NyaXB0Pg0KCQkvLyBDb2RlIGZyb20gLmpzIGZpbGVzIGdvZXMgaGVyZS4gDQoJCWZ1bmN0aW9uIGNoYW5nZVBhcmFncmFwaCgpIHsNCgkJICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwIilbMF0uaW5uZXJIVE1MID0gIkNvbnRlbnQgb2YgcGFyYWdyYXBoIGNoYW5nZWQuIjsNCgkJfQ0KCTwvc2NyaXB0Pg0KCTxib2R5Pg0KCQk8aW1nIHNyYz0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFVQUFBQUR3QkFNQUFBQ0RBNkJZQUFBQU1GQk1WRVZVVmx1T2o1TC8vLzlrWm1xbXA2bUJnb1dhbTUyeHNyTnpkSGk4dkw3dDdlNzI5dmJHeDhqazVPVFEwZExhMnR2SHNtSDhBQUFDSjBsRVFWUjRBZXpCZ1FBQUFBQ0FvUDJwRjZrQ0FBQUFBQUFBQUFBQUFBQUFBQUFBWUExdElLU2twRERxUUdMQXFBTkhIY2dzSWd3a3d4SUJ6SllCaEJSaEdJYmZiWGZiMWUzcU5vRUU5NVN1bTJuM1Z1SndNSHNRa0FGUVpBVUF4bDA2UU9zRXVNaENDTWNRQVRFWEJhaURBOGdFSUpJQXNKYUFNdmsrVGdrQTVuL2cvN3p2NE9HYitZMmN4djdqVkVaMzRLZG5kNStrTlFudXd1b2NNbDJCOTVZZUZoRHZTVHFmRTAwdldhV3RBcUtrTnNHcndFWUw0S1BrSjNFcW5WanNndTBTWURTdVM5Qk1lQUN3WnFGenJBN0dyZ2x1NHl6cUVuUnlnSkdVdzlzU050ekt5YlNFelNXczF5VzR1WjhEcDY4QXRlR1dXaEJaTVp6TWdhd0J3M0d6SkI3WEpQaFoyN0N1aGd0VzFVSXFRVXY0WXFwa1BiZ21IVUJTazJDaUh0ejA3Y294T1JVdzlTbTdBQXVwRHkvcXVtYlVzY20xcEdkSHZ3RUVTRlpuNTNCZ0VZTGdJUTVOd0o4aHV4MlNZTHZBUVlFS1hvVG81YVQ4ZjhXZkJrWWFnT0FCTEh4U0RvbFVRcllDMytUVUwrZ3JWYk1BZlljM1Z2ZzFjeXoxcWlvTFEvQ0RuZ042QlBGcGVYWlJ6NXB6U0FJUVhBRytBcWlQVVVCbXhYQUprUUlRN0dEa1o5OXp2UFBQejhKYUNJSTZBYTc3ZEI5NDdlOWt0d1NJVjRNUWJPV01VcDkwci9veGRrRjFjb2oyRkFiZHdWaC9zUlZiZUhreVUyQThyYXBVV3NKVVliSUQ3MllQSVZhZzlNRzVvVUJwbGppSlFtVUw0NmZDNWM1UjlldFBlM0FnQUFBQWdBQm83UEZYR0tCcUFBQUFBQUFBQUFBQUFBQUFBQUFBQUxnTmtYVy9TUloxSldBQUFBQUFTVVZPUks1Q1lJST0iIGFsdD0iIj4NCgkJPGgxPlNpbmdsZS1wYWdlIEFwcGxpY2F0aW9uIEV4YW1wbGU8L2gxPg0KCQk8cD5UaGlzIGlzIGFuIGV4YW1wbGUgb2YgYSB3ZWIgYXBwIHRoYXQgaW50ZWdyYXRlcyBIVE1MLCBDU1MsIEphdmFTY3JpcHQsIGFuZCBhbiBpbWFnZSBpbnRvIG9uZSAuaHRtbCBmaWxlIHRoYXQgaXMgZW5jb2RlZCB0byBCYXNlNjQuPC9wPg0KCQk8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgb25jbGljaz0iY2hhbmdlUGFyYWdyYXBoKCkiPkNoYW5nZSBQYXJhZ3JhcGg8L2J1dHRvbj4NCgk8L2JvZHk+DQo8L2h0bWw+
    

答案 1 :(得分:2)

尝试使用HTTrack

使用网站复印机非常高效且易于使用。您所要做的就是粘贴您想要制作本地副本

的网站链接

按照以下步骤操作,因为您希望所有内容都在单页

  1. 缩小所有样式表并将其放入主页中的<style> HTML页面使用CSS minifier
  2. 缩小所有脚本并将它们放在<script>内的同一文件中。使用JavaScript Minifier
  3. 使用spites
  4. 处理图片

答案 2 :(得分:1)

另一个解决方案是使用带有自定义扩展的Web代理来存储源,参见https://github.com/SommerEngineering/WebProxy

这个GitHub项目是我用Go编写的一个简单的Web代理。在Main.go第71行及以后的内容会将原始网站上的所有数据复制到您的浏览器中。

在您的情况下,如果数据已经存储,您将添加查询。如果是这样,请从磁盘加载并将其发送到您的浏览器。如果没有,请从源加载它并将其存储到磁盘。

使用单个文件存储的条件不是问题:Go可以读取和写入,例如ZIP文件,参见https://golang.org/pkg/archive/zip/。如果您需要立即进行这些网站转储,则需要一些代码来跟踪所有链接,以便现在存储任何内容。

因此,这个答案不是您问题的现成解决方案。相反,它需要编写一点代码。 Go代码可以编译到任何平台(x86,ARM,PPC)和操作系统(Linux,macOS,Windows)。

希望,这个答案为你提供了一个选择。

答案 3 :(得分:0)

有一个 Chrome 扩展程序 SingleFile 可以做到这一点