2012-04-01 56 views
2

我如何從WebView獲取網頁的源代碼?我如何從WebView獲取頁面源代碼?

我只想在我的WebView輸入www.google.com,然後當我進入這個網站,我想例如源

String a=........;(source) 
+0

你想整個源代碼或只是HTML標記? – 2012-04-01 17:55:18

+0

我想整個源代碼。 (例如,當我將它粘貼到.txt中並使用瀏覽器打開它時我想查看該網站) – 2012-04-01 17:57:05

+0

您瞭解我嗎? – 2012-04-01 18:06:34

回答

9

我不知道這是怎麼遠將是很有幫助。但我已經使用下面的代碼片段來獲取一個小的HTML頁面的數據。我希望它能幫助你。

創建類似下面的一個類,

class MyJavaScriptInterface 
    { 
     @SuppressWarnings("unused") 
     public void processHTML(final String html) 
     { 
      Log.i("processed html",html); 

      Thread OauthFetcher=new Thread(new Runnable() { 

       @Override 
       public void run() { 

        String oAuthDetails=null; 
         oAuthDetails=Html.fromHtml(html).toString(); 
         Log.i("oAuthDetails",oAuthDetails); 

       } 
      });OauthFetcher.start(); 
     } 
     } 

現在,在您的onCreate(),

webview.getSettings().setJavaScriptEnabled(true); 
webview.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT"); 

    webview.setWebViewClient(new WebViewClient(){ 

      @Override 
      public void onPageFinished(WebView view, final String url) { 


       String oAuthUrl=getString("www.google.com"); 

       if(url.contains(oAuthUrl)) 
       { 
        Log.i("Contains","Auth URL"); 

        twitter_webview.loadUrl("javascript:window.HTMLOUT.processHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');"); 
       } 
      } 
      @Override 
      public void onPageStarted(WebView view, String url, Bitmap favicon) { 

       progressDialog.show(); 
      } 
     }); 

現在發生的事情是,當你的頁面加載完成後,將JavaScript類會被調用,它將檢索頁面源並按照您的要求將其存儲在字符串中。

+0

我現在看到它,我正在嘗試這個謝謝。 – 2012-04-02 15:56:49

+0

位圖和progressDialogit不會導入,我將twitter_webview更改爲webvie?什麼可以做 – 2012-04-02 16:10:57

+1

什麼是getstring? – 2012-04-02 16:12:12

4

和API 17

import android.webkit.JavascriptInterface; 

public class MainActivity extends Activity { 

final Context myApp = this; 

@JavascriptInterface 
public void processHTML(String html) { 
    if (html == null) 
     return; 

} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final WebView browser = (WebView) findViewById(R.id.webview); 
    browser.getSettings().setJavaScriptEnabled(true); 
    browser.addJavascriptInterface(this, "HTMLOUT"); 
    browser.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onPageFinished(WebView view, String url) { 
      browser.loadUrl("javascript:window.HTMLOUT.processHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');"); 
     } 
    }); 
    browser.loadUrl("http://www.google.co.il"); 
} 

}