Como extrair o HTML de uma Webview?
Em um projeto precisei extrair o HTML de uma webview.
As vezes para realizar um webcrawler você necessite dessa extração.
A seguir é apresentado o código comentado para se conseguir fazer isso.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
final Context myApp = this; /* Uma instância dessa classe será registrado como uma interface de JavaScript classe MyJavaScriptInterface */ { @JavascriptInterface @SuppressWarnings("unused") public void processHTML(String html) { // Processar o HTML de acordo com a necessidade do APP. } } final WebView browser = (WebView)findViewById(R.id.browser); /* O javaScript deve ser ativado se você quer que ele funcione, obviamente */ browser.getSettings().setJavaScriptEnabled(true); /* Aqui é registrado uma nova interface de JavaScript chamado HTMLOUT */ browser.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT"); /* O WebViewClient deve ser definido antes de chamar o loadUrl! */ browser.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { /* <span id="result_box" class="" lang="pt"><span class="hps">Esta chamada</span> <span class="hps">injeta o</span> <span class="hps">JavaScript</span> <span class="hps">para dentro da página</span> <span class="hps">quando termina </span><span class="hps">de carregar</span>.</span> */ browser.loadUrl("javascript:window.HTMLOUT.processHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');"); } }); /* Carrega a página desejada */ browser.loadUrl("https://www.canalti.com.br"); |