android获取webview源码,在WebView中获取网页源码

本文介绍了如何在Android应用中使用WebView获取网页源码。首先,需要启用JavaScript,然后创建本地接口并暴露给网页,接着自定义WebViewClient并在onPageFinished中调用JavaScript函数获取HTML内容,最后在本地接口的回调中打印网页源码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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('

'+" +

"document.getElementsByTagName('html')[0].innerHTML+'');");

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('

'+" +

"document.getElementsByTagName('html')[0].innerHTML+'');");

super.onPageFinished(view, url);

}

}

final class InJavaScriptLocalObj {

public void showSource(String html) {

Log.d("HTML", html);

}

}

}

6.关键之处在于:

view.loadUrl("javascript:window.local_obj.showSource('

'+document.getElementsByTagName('html')[0].innerHTML+'');");

运行,可以看到在showSource(String html)中打印了网页源码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值