【问题标题】:How to save all web page including .css .js?如何保存所有网页,包括 .css .js?
【发布时间】:2015-08-05 12:47:17
【问题描述】:

我想以编程方式保存所有网页,包括 .css .js 在 android 上。 到目前为止,我尝试了html get 方法和jsoup , webview content,但所有这些我都无法使用 css 和 js 保存所有页面。这些方法只是保存 WEB Page 的 html 部分。当我保存所有页面时,我想离线打开它。

提前致谢

【问题讨论】:

  • 以下任何答案有帮助吗?如果是,请接受一个,以便可以认为线程已关闭。如果没有,请提供一些反馈,以便您获得帮助。如果您已经找到解决问题的其他方法,请不要犹豫,发布并选择它作为您问题的答案。

标签: android android-webview jsoup androidhttpclient


【解决方案1】:

您必须获取 html,对其进行解析并获取资源的 url,然后也对这些 url 发出请求。

public class Stack {

    private static final String USER_AGENT = "";
    private static final String INITIAL_URL = "";

    public static void main(String args[]) throws Exception {
        Document doc = Jsoup
                        .connect(INITIAL_URL)
                        .userAgent(USER_AGENT)
                        .get();

        Elements scripts = doc.getElementsByTag("script");
        Elements css     = doc.getElementsByTag("link");

        for(Element s : scripts) {
            String url = s.absUrl("src");
            if(!url.isEmpty()) {
                System.out.println(url);
                Document docScript = Jsoup
                                        .connect(url)
                                        .userAgent(USER_AGENT)
                                        .ignoreContentType(true)
                                        .get();

                System.out.println(docScript);
                System.out.println("--------------------------------------------");
            }
        }

        for(Element c : css) {
            String url = c.absUrl("href");
            String rel = c.attr("rel") == null ? "" : c.attr("rel");
            if(!url.isEmpty() && rel.equals("stylesheet")) {
                System.out.println(url);
                Document docScript = Jsoup
                                        .connect(url)
                                        .userAgent(USER_AGENT)
                                        .ignoreContentType(true)
                                        .get();
                System.out.println(docScript);
                System.out.println("--------------------------------------------");
            }
        }
    }
}

【讨论】:

    【解决方案2】:

    我也有类似的问题... 使用此代码,我们可以获得图像、.css、.js。但是仍然缺少一些 html 内容。 例如,当我们通过 chrome 保存网页时,有 2 个选项。

    1. 完整的html
    2. 仅 HTML

    Out of .css,.js,.php...“完整的 html”包含比“仅 html”更多的元素。要求是像第一个选项中的 chrome 一样完整地下载 html。

    【讨论】:

    • 那么我该如何在 android 中做到这一点?
    • 你可以使用这个:view.loadUrl("javascript:window.HtmlViewer.showHTML" + "(''+document.documentElement.innerHTML+'');") ;
    • 你可以使用这个:view.loadUrl("javascript:window.HtmlViewer.showHTML" + "(''+document.documentElement.innerHTML+'');") ;在你的 javascript 类中添加这个; public void showHTML(String html) { //yourcodes here } 上面的答案导航到所有链接,但这里的问题是获取 iframe 数据。虽然我找不到识别 iframe 渲染已完成的方法,但如果您将代码延迟 5 秒,您将使用上面的 javascript 获得整个 html...
    猜你喜欢
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 2023-03-21
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    相关资源
    最近更新 更多