首页 > 系统 > Android > 正文

android 获取当前webview显示的网页的源码和网页中框架的源码

2019-11-07 23:05:08
字体:
来源:转载
供稿:网友

如果是仅仅是为了获取网页的源代码的话,可以参考这篇文章:Android: 在WebView中获取网页源码

但是,我遇到的情况是网页中套用了框架,仅仅查看网页源代码是不能得到我想要的数据的,需要获得框架的源代码,经过多次测试,终于找到解决办法。 废话不多说,直接上代码: 自定义WebViewClient代码:

public class MWebViewClient extends WebViewClient { PRivate static final String TAG = "MWebViewClient"; private static final String GET_FRAME_CONTENT_STR = "document.getElementById('你自己要查找的框架的id').contentWindow.document.body.innerHTML"; //如果只是为了获取网页源代码的话,可以重写onPageFinished方法,在onPageFinished方法里执行相应的逻辑就好。但是当框架里显示的内容发生变化时,onPageFinished方法不会再掉用,只会调用onLoadResource方法,所以此处需要重写此方法。 @Override public void onLoadResource(WebView view, String url) { view.loadUrl("javascript:window." + Constant.SHOW_SOURCE_JS_NAME + ".showSource('<head>'+" + GET_FRAME_CONTENT_STR + "+'</head>');"); super.onLoadResource(view, url); }}

webview调用代码:

mWebView.getSettings().setJavascriptEnabled(true); mWebView.addJavascriptInterface(new ShowSourceJs(), Constant.SHOW_SOURCE_JS_NAME); mWebView.setWebViewClient(new MWebViewClient()); mWebView.loadUrl(SCHOOL_URL);

ShowSourceJs代码:

public final class ShowSourceJs { private static final String TAG = "ShowSourceJs"; @JavascriptInterface public void showSource(String content) { File file = new File(Environment.getExternalStorageDirectory(), Constant.COURSES_DIR_NAME); if (!file.exists()) { file.mkdirs(); } File htmlFile = new File(file.getAbsolutePath(), Constant.COURSES_HTML_NAME); FileUtil.writeToFile(content,htmlFile); }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表