在WebView中获取网页中的内容

泡在网上的日子 / 文 发表于2015-02-08 21:26 次阅读 WebView

原理:重写WebViewClient的onPageFinished方法,在onPageFinished中加载一段js代码,js代码再调用本地方法

用下面的方法可以获取网页的html源码

import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class HtmlSource extends Activity {
    private WebView webView;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        webView = (WebView)findViewById(R.id.webview);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.addJavascriptInterface(new InJavaScriptLocalObj(), "local_obj");
        webView.setWebViewClient(new MyWebViewClient());
        webView.loadUrl("http://www.cnblogs.com/hibraincol/");
    }
    
    
   final class MyWebViewClient extends WebViewClient{  
        public boolean shouldOverrideUrlLoading(WebView view, String url) {   
            view.loadUrl(url);   
            return true;   
        }  
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            Log.d("WebView","onPageStarted");
            super.onPageStarted(view, url, favicon);
        }    
        public void onPageFinished(WebView view, String url) {
            Log.d("WebView","onPageFinished ");
            view.loadUrl("javascript:window.local_obj.showSource('<head>'+" +
                    "document.getElementsByTagName('html')[0].innerHTML+'</head>');");
            super.onPageFinished(view, url);
        }
    }
    
    final class InJavaScriptLocalObj {
        public void showSource(String html) {
            Log.d("HTML", html);
        }
    }
}


收藏 赞 (5) 踩 (34)
上一篇:WebViewClient与WebChromeClient的区别
Android应用开发的时候可能会用到WebView这个组件,使用过程中可能会接触到WebViewClient与WebChromeClient,那么这两个类到底有什么不同呢? WebViewClient主要帮助WebView处理各种通知、请求事件的,比如: onLoadResource onPageStart onPageFinish onRec
下一篇:InstaMaterial概念设计第三部分-feed卡片上的按钮、评论按钮
这篇文章是实现InstaMaterial的一部分,今天我们将仔细讲解上篇文章中跳过的细节。也就是说我们实现的还是视频中9-13秒这个时间段。 这是今天这篇文章完成之后的最终效果(棒棒糖以及棒棒糖之前) 初始化 没有什么大书特书的,我们只需为feed卡片元素中的按