如何在android中下载Html页面及其内部文件?

How to download an Html page and its internal files in android?

我正在开发一个需要从 link 下载网页源代码的应用程序,其中包含所有内部文件,如图像、css、javascript .

之后,我需要在网络视图中以离线模式打开此 html,这就是为什么我需要从页面下载所有内容的原因。

我会使用 JSOUP 下载图像,但我不知道如何将它们 link 放入下载的 html。

你能给我一些例子,或者从哪里着手吗?

提前致谢

你可以用 Jsoup 来做。 IMO,这是很多工作。另一方面,你可以考虑 Crawler4j.

他们的网站上有教程。查看 crawling images.

的示例

基本上,您需要做的(以及下面提到的我的应用所做的)是遍历指向其他资产/图像/脚本等的所有参考链接,下载它们,然后更改 HTML 文件指向本地下载的副本。像这样,使用 Jsoup:

  • 找到页面上所有的img个元素,

  • img元素的src属性中获取图片文件的位置/url(with.attr("abs:src:)),

  • 将所有这些图像下载到本地目录

  • 将每个图像元素的 src 属性值更改为指向下载图像文件的位置,相对于主 HTML 文件的存储位置,例如 .attr("src", "assets/imagefilename.png"").

  • 对页面所需的所有其他资产执行此操作,例如。图片、CSS、脚本、html5 视频等。我还在 CSS(链接和内联)上做了一些正则表达式来提取、下载和重写诸如背景图像引用和 css 之类的东西。网页还有其他链接的东西,例如您可能也需要的网站图标或 RSS 提要。

  • 通过调用 .toString() 并将结果保存到文件,将您的 Jsoup 文档(修改后的 URL 指向您下载的资产版本)保存到文件。

然后您可以在网络视图中打开本地 HTML 文件,假设您已正确完成所有操作,它将显示所有图像和资产,甚至离线。


我实际上写了一个 Android 应用程序,它正是这样做的:将完整的 HTML 文件和所有 CSS/图像/其他资产保存到本地文件/目录,使用 Jsoup。

实际 HTML 页面保存/下载代码参见 https://github.com/JonasCz/SaveForOffline/ for the source, specifically SaveService.java

注意它是 GPL 许可的,因此如果您使用它(部分),则必须遵守 GPL 许可。

还要注意它做了很多事情,结果相当混乱,(也没有评论或文档......)但它可能对你有帮助。