📜  如何从加载的 WebView 中获取 HTML 代码?(1)

📅  最后修改于: 2023-12-03 14:51:47.413000             🧑  作者: Mango

如何从加载的 WebView 中获取 HTML 代码?

WebView 是 Android 中内置的浏览器控件,可以用来加载网页和展示 HTML 内容。有时我们需要从 WebView 中获取加载的 HTML 代码,以进行后续操作。本文将介绍如何从 WebView 中获取 HTML 代码。

方法一:使用 WebViewClient

通过设置 WebViewClient 的回调方法 onPageFinished,可以在 WebView 加载完页面后获取到 HTML 代码。

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        // 获取页面内容
        String html = view.getOriginalUrl();
        // TODO: 处理 HTML 代码
    }
});

onPageFinished 方法中,可以通过 view.getOriginalUrl() 获取到当前 WebView 加载的页面的 HTML 代码。需要注意的是,这里获取到的 HTML 代码可能并不是完整的,因为可能存在异步加载的内容未完成的情况。如果需要获取完整的 HTML 代码,可以通过添加延迟等方法等待异步加载完成后再进行获取。

方法二:使用 evaluateJavascript 方法

在 Android 4.4 及以上版本中,WebView 添加了新的方法 evaluateJavascript,可以在页面加载完成后直接获取完整的 HTML 代码,而无需等待异步加载完成。

webView.post(new Runnable() {
    @Override
    public void run() {
        webView.evaluateJavascript("document.documentElement.outerHTML", new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String html) {
                // TODO: 处理 HTML 代码
            }
        });
    }
});

这里使用了 document.documentElement.outerHTML 作为 js 脚本,直接获取整个文档的 HTML 代码。

总结

通过以上两种方法,我们可以很容易地从 WebView 中获取到 HTML 代码,以进行后续操作。需要注意的是,在使用 onPageFinished 方法获取 HTML 代码时需要注意异步加载的内容,而使用 evaluateJavascript 方法则需要注意 Android 版本的兼容性。