如何在安卓中下载 Html 页面及其内部文件

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

本文关键字:文件 内部 Html 下载      更新时间:2023-09-26

我正在开发一个应用程序,该应用程序需要从链接下载网页的源代码,其中包含所有内部文件,如图像,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。

他们的网站上有一个教程。查看抓取图像的示例。