【问题标题】:How to download an Html page and its internal files in android?如何在 android 中下载 Html 页面及其内部文件?
【发布时间】:2016-01-30 20:00:24
【问题描述】:

我正在开发一个应用程序,该应用程序需要从链接下载网页源,以及所有内部文件,如图像、css、javascript。

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

我会使用 JSOUP 下载图像,但我不知道如何将它们链接到下载的 html 中。

你能给我一些例子,或者从哪里开始?

提前致谢

【问题讨论】:

  • 在html页面中你应该有img标签,另外你知道你的文件名。您可以尝试扫描 html 页面并将图像的源路径替换为新路径。我必须补充一点,根据您保存的网站的大小,您的手机内存将很快被填满
  • 不知道是否可以在 Android 上运行,但 wget 将是我通常处理此问题的方式。您可以将几个标志传递给 wget,使其完全按照您的意愿行事。

标签: javascript android html css jsoup


【解决方案1】:

本质上,您需要做的(以及下面提到的我的应用程序所做的)是查看指向其他附加资产/图像/脚本等的所有参考链接,下载它们,然后将 HTML 文档更改为指向本地下载的副本。像这样,使用 Jsoup:

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

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

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

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

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

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

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


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

查看源代码https://github.com/JonasCz/SaveForOffline/,具体的HTML页面保存/下载代码SaveService.java

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

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

【讨论】:

  • 伙计,太棒了!非常感谢,我会从你的项目中汲取灵感。
  • 太棒了,它帮助了你!如果您有任何其他问题,请告诉我@Jackcar。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 2012-02-18
    • 1970-01-01
    相关资源
    最近更新 更多