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

标签 javascript android html css jsoup

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

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

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

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

提前致谢

最佳答案

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

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

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

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

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

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

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

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


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

参见 https://github.com/JonasCz/SaveForOffline/对于来源,特别是SaveService.java用于实际的 HTML 页面保存/下载代码。

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

另请注意,它做了很多事情,结果相当困惑(也没有评论或文档......)但它可能对您有所帮助。

关于javascript - 如何在android中下载一个Html页面及其内部文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35064536/

相关文章:

Android ListView addHeaderView 不适用于简单的 View

html - 如何在无序列表项上方对齐图像

javascript - 在 jQuery 中拖放多个 <ul> 元素

android - 从 Android 设备连接到嵌入式蓝牙设备

html - 使用 css + html 在同一页面上编辑两个不同的 iframe 最小高度

php - 使用 google gps api 和 php 获取两点之间的距离

每秒在 ASP.net 头部创建 Javascript,Ajax Timer 导致问题

javascript - 使用 JS Fetch API 的 PHP POST

javascript - 导出默认箭头函数无法导入

java - Google Api Java 客户端列出根文件夹子级