Android在WebView中获取网页源码
1. 使能javascript:
1 | webView.getSettings().setJavaScriptEnabled( true ); |
2. 编写本地接口
1 2 3 4 5 | final class InJavaScriptLocalObj { public void showSource(String html) { Log.d( "HTML" , html); } } |
3. 向网页暴露本地接口
1 | webView.addJavascriptInterface( new InJavaScriptLocalObj(), "local_obj" ); |
4. 编写自己的WebViewClient,并在onPageFinished中提取网页源码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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); } } |
组合在一起的代码为:
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | 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( "<a href="http://www.cnblogs.com/hibraincol/">http://www.cnblogs.com/hibraincol/</a>" ); } 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); } } } |
关键之处在于:
view.loadUrl("javascript:window.local_obj.showSource('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
运行,可以看到在showSource(String html)中打印了网页源码。
相关推荐
瓜牛呱呱 2020-11-12
柳木木的IT 2020-11-04
yifouhu 2020-11-02
lei0 2020-11-02
源码zanqunet 2020-10-28
源码zanqunet 2020-10-26
一叶梧桐 2020-10-14
码代码的陈同学 2020-10-14
lukezhong 2020-10-14
lzzyok 2020-10-10
anchongnanzi 2020-09-21
clh0 2020-09-18
changcongying 2020-09-17
星辰大海的路上 2020-09-13
abfdada 2020-08-26
mzy000 2020-08-24
shenlanse 2020-08-18
zhujiangtaotaise 2020-08-18
xiemanR 2020-08-17