我如何从WebView获取页面源代码?

时间:2012-04-01 17:53:27

标签: android android-webview

我如何从WebView获取网页的来源?

我想只在我的网页浏览中输入www.google.com,当我进入此网站时,我想获取源代码

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

3 个答案:

答案 0 :(得分: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类,它将检索页面源并将其作为您的要求存储在String中。

答案 1 :(得分: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");
}

}

答案 2 :(得分:1)

如果您的minSdkVersion为19或更高,则可以使用以下内容。


override fun onPageFinished(view: WebView?, url: String?) {
    super.onPageFinished(view, url)
    view?.evaluateJavascript("""(function() {
        return "<html>" + document.getElementsByTagName('html')[0].innerHTML + "</html>";
    })()""".trimMargin()) {
        console.log(it)
    }
}