如何在安卓中下载 Html 页面及其内部文件
How to download an Html page and its internal files in android?
我正在开发一个应用程序,该应用程序需要从链接下载网页的源代码,其中包含所有内部文件,如图像,css,javascript。
之后,我需要在离线模式下以 web 视图打开此 html,这就是为什么我需要从页面下载所有内容。
我会使用 JSOUP 下载图像,但我还没有想到如何将它们链接到下载的 html 中。
你能给我举一些例子,或者从哪里开始吗?
提前致谢
从本质上讲,您需要做的(以及下面提到的我的应用程序所做的)是遍历指向其他附加资产/图像/脚本等的所有引用链接,下载它们,然后更改 HTML 文档以指向本地下载的副本。 像这样的东西,与Jsoup:
-
找到页面上的所有
img
元素, -
从
img
元素的 src 属性中获取图像文件的位置/网址(带.attr("abs:src:)
), 将所有这些映像下载到本地目录
更改每个图像元素 src 属性值以指向下载的图像文件的位置,相对于主 HTML 文件的存储位置,例如使用
.attr("src", "assets/imagefilename.png"")
.对页面所需的所有其他资产执行此操作,例如图像、CSS、脚本、html5 视频等。我还在 CSS(链接和内联)上做了一些正则表达式来提取、下载和重写背景图像引用和 css 中的内容。网页还具有您可能还想要的其他链接内容,例如网站图标或RSS提要。
将 Jsoup 文档(修改后的 URL 指向您下载的资产版本)保存到文件中,方法是对它调用
.toString()
并将结果保存到文件中。
然后,您可以在 webview 中打开本地 HTML 文件,假设您做对了一切,它将与所有图像和资产一起显示,甚至离线。
我实际上编写了一个Android应用程序,它正是这样做的:使用Jsoup将完整的HTML文件和所有CSS/图像/其他资产保存到本地文件/目录中。
有关源代码,请参阅 https://github.com/JonasCz/SaveForOffline/,特别是SaveService.java以获取实际的HTML页面保存/下载代码。
请注意它是GPL许可的,所以如果你使用它(部分)它,你必须遵守GPL许可证。
还要注意它做了很多事情,因此非常混乱,(也没有评论或文档......),但它可能会帮助你。
用Jsoup来做。IMO,这是很多工作。另一方面,您可以考虑Crawler4j。
他们的网站上有一个教程。查看抓取图像的示例。
- js和css文件-在publichtml外部或内部
- Javascript和CSS,内部HTML与外部文件
- 500(内部服务器错误)的外部php文件
- 将表单元格数据转换为单独.js文件中的内部链接
- 将每个函数与 getJSON 一起使用一个内部文件
- 如何将当前文档的内部 HTML 下载为文件
- 如何从 Ajax() 的内部 HTML 缓存 JS 文件
- 如何将内部 JavaScript 文件链接到我在 GitHub 中的 HTML 文件
- 通过我的应用程序删除驻留在内部 Linux 服务器上的文件
- 如何调用 Document.ready 内部的外部.js,方法是从 HTML 传入变量来调用下面的.js文件
- 使用 JavaScript 从 XML 文件中获取内部元素
- 如何在安卓中下载 Html 页面及其内部文件
- 允许在 HTML5 应用程序中访问内部网/本地文件的解决方案
- Ext JS 4的文件上传和内部服务器错误
- 浏览器加载错误仅具有特定文件路径 - 内部服务器错误 500
- 如何将JSON和JS从HTML文件内部移动到外部文件
- jquery文件内部引发错误-奇怪的语法
- 需要从另一个外部. js文件内部引用外部脚本
- 可以从javascript文件内部获取ASP.NET控件值
- 从文件内部执行节点脚本