Android從WebView中獲取html,并且獲取某個(gè)標(biāo)簽的內(nèi)容

  1. 初始化webView,使其支持javascript
        WebSettings settings = mWebView.getSettings();
        settings.setJavaScriptEnabled(true);
  1. 添加一個(gè)js交互對(duì)象
mWebView.addJavascriptInterface(new JavaObjectJsInterface(), "java_obj");

    public class JavaObjectJsInterface {
        @JavascriptInterface // 要加這個(gè)注解,不然調(diào)用不到
        public void onHtml(String html) {
        }
    }
  1. 添加一個(gè)WebViewClient監(jiān)聽(tīng)狀態(tài),并且在完成時(shí)通過(guò)js調(diào)用java對(duì)象的方法
mWebView.setWebViewClient(new MyWebViewClient());

public class MyWebViewClient extends WebViewClient {
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            Log.d(TAG, "onPageFinished: ");
                    mWebView.loadUrl("javascript:window.java_obj.onHtml('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
        }
    }
  1. 通過(guò)jsoup提取標(biāo)簽,需要在app的build.gradle中添加:
    implementation 'org.jsoup:jsoup:1.9.2' // 獲取/解析html文本

在onHtml()中解析:

public void onHtml(String html) {
     Document document = Jsoup.parseBodyFragment(html);
     if (document != null) {
         Log.d(TAG, "onHtml: 解析document成功");
         Elements elements = document.select(".video");
        if (elements != null && !elements.isEmpty()) {
            Element element = elements.get(0);
            String src = element.attr("src");
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容