您的位置:首页 > 移动开发

在WebView中获取网页源码

2013-11-01 00:00 411 查看
1. 使能javascript

webView.getSettings().setJavaScriptEnabled(true);

2. 编写本地接口

final class InJavaScriptLocalObj {
public void showSource(String html) {
Log.d("HTML", html);
}
}

3. 向网页暴露本地接口
webView.addJavascriptInterface(new InJavaScriptLocalObj(), "local_obj");

4. 编写自己的WebViewClient,并在onPageFinished中提取网页源码。

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);

}

}

5.组合在一起的代码为:

package com.hi.briancol.htmlsource;

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);

}

}

}

6.关键之处在于:

view.loadUrl("javascript:window.local_obj.showSource('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");

运行,可以看到在showSource(String html)中打印了网页源码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  WebView网页源码