2

我想在 webview android 上部分查看网页并从网页中删除一些 div 元素。我有一个这样的网页

<!DOCTYPE html>
<body>

<div id="a"><p>Remove aa</p></div>
<div id="b"><p>bb</p></div>

</body></html>

现在我想从网页中删除 id 为“a”的 div。

我尝试用 Jsoup 对其进行编码,但我还不够好,无法完成。请看我的完整代码:

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class CustomWebsite extends Activity {

    private WebView webView;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_custom_website); 

         Document doc;

         String htmlcode = "";

         try {
             doc = Jsoup.connect("http://skyasim.info/ab.html").get();
             doc.head().getElementsByTag("DIV#a").remove();

              htmlcode = doc.html();


         } catch (IOException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
         }

        webView = (WebView) findViewById(R.id.webView_test);
        webView.setWebViewClient(new myWebClient());
        webView.getSettings().setJavaScriptEnabled(true); 
        webView.loadUrl("htmlcode");


        }

          public class myWebClient extends WebViewClient
            {
                @Override
                public void onPageStarted(WebView view, String url, Bitmap favicon) {
                    // TODO Auto-generated method stub
                    super.onPageStarted(view, url, favicon);
                }

                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    // TODO Auto-generated method stub

                    view.loadUrl(url);
                    return true;

                }
            }


}
4

3 回答 3

5

你可以在不使用你知道的 Jsoup 的情况下做到这一点。只需使用普通的旧javascript。下面的代码将展示如何从 HTML 页面中删除一个元素并显示其余部分。

final WebView mWebView = (WebView) findViewById(R.id.mWebViewId);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new WebViewClient() {
 @Override
public void onPageFinished(WebView view, String url)
{
mWebView.loadUrl("javascript:(function() { " +
    "document.getElementById('a')[0].style.display='none'; " +
    "})()");
}
});
mWebView.loadUrl(youUrl);
于 2015-06-21T05:18:55.847 回答
3

通过选择它然后使用 - 方法将其从文档中删除remove

doc.select("div#a").remove();
System.out.println(doc);

例子:

Document doc = Jsoup.parse(html);
System.out.println("Before removal of 'div id=\"a\"' = ");
System.out.println("-------------------------");
System.out.println(doc);

doc.select("div#a").remove();
System.out.println("\n\nAfter removal of 'div id=\"a\"' = ");
System.out.println("-------------------------");
System.out.println(doc);

将导致

Before removal of 'div id="a"' = 
-------------------------
<!DOCTYPE html>
<html>
 <head></head>
 <body> 
  <div id="a">
   <p>Remove aa</p>
  </div> 
  <div id="b">
   <p>bb</p>
  </div> 
 </body>
</html>


After removal of 'div id="a"' = 
-------------------------
<!DOCTYPE html>
<html>
 <head></head>
 <body>  
  <div id="b">
   <p>bb</p>
  </div> 
 </body>
</html>
于 2013-08-02T07:14:32.257 回答
2

我之前曾尝试使用 Jsoup 做类似的事情,但我的应用程序总是崩溃。如果您只愿意使用 Javascript(这有助于使您的应用程序更小),这是我为我的应用程序所做的:

webview3.setWebViewClient(new WebViewClient() {

        @Override
        public void onPageFinished(WebView view, String url) {
            view.loadUrl("javascript:var con = document.getElementById('a'); " +
                    "con.style.display = 'none'; ");

            }


    });

希望我的 Javascript 是正确的。这里的想法是在页面加载完成后使用 Javascript 隐藏 div。

于 2013-08-02T08:54:22.360 回答