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

时间:2016-01-28 14:45:35

标签: javascript android html css jsoup

我正在开发一个需要从链接下载网页源的应用程序,包含所有内部文件,如图像,CSS,javascript。

之后,我需要在离线模式下在webview中打开这个html,这就是我需要从页面下载所有内容的原因。

我使用JSOUP下载图像,但我没有想法如何将它们链接到下载的HTML中。

你能给我一些例子,或者从哪里开始寻找起点吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

基本上,您需要做的事情(以及我的应用程序在下面提到的内容)会覆盖所有引用链接到其他附加资产/图像/脚本等等,下载它们,然后更改HTML文档指向本地下载的副本。像Jsoup这样的东西:

  • 查找页面上的所有img元素

  • img元素的src属性获取图像文件的位置/网址(使用.attr("abs:src:)),

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

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

    < / LI>
  • 对页面所需的所有其他资产执行此操作,例如。图像,CSS,脚本,html5视频等。我还在CSS(链接和内联)上做了一些正则表达式来提取,下载和重写像背景图像引用和css这样的东西。网页还有其他链接的东西,比如你可能也想要的favicons或RSS feed。

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

然后,您可以在webview中打开本地HTML文件,并且假设您已完成所有操作,它将显示所有图像和资源,甚至是离线。

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

请参阅https://github.com/JonasCz/SaveForOffline/了解来源,特别是SaveService.java了解实际的HTML页面保存/下载代码。

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

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

答案 1 :(得分:0)

你可以用Jsoup来做。 IMO,它做了很多工作。另一方面,您可以考虑Crawler4j

他们的网站上有一个教程。请查看crawling images的示例。

相关问题