2016-11-08 146 views
2

我试图从网页中提取小部分,并加载到web视图 我曾尝试下面的链接给出解决方案的网页的一部分,但它没有工作如何显示上的WebView的Android

Display a part of the webpage on the webview android

#使用getElementsByClass(“darewod”)提取数据;

htmlDocument = Jsoup.connect(htmlPageUrl).get(); 
element = htmlDocument.getElementsByClass("darewod"); 



String html = element.toString(); 
String mime = "text/html"; 
String encoding = "utf-8"; 

我曾尝试以下两种方法来加载到网页视图,但似乎不工作,它只是打印HTML的UI

wv1.loadDataWithBaseURL(null, html, "text/html", "utf-8", null); 

    wv1.loadData(html, "text/html", null); 

你能告诉我,如果我在这里缺少什么?

+0

你能要么份额String html的url或内容?问题可能是:'html'不再是一个有效的html文档,并且缺少所有头部定义(CSS等)。 –

+0

Html有这个值

Workout of the Day
这个html是否合法? – user7129054

回答

2

您加载HTML代码没有正确structure(所以在head所有定义都将丢失,如CSS引用)和无初始文件(或基本URL加载)的所有相对路径被打破。

<div class="darewod"> <a title="Workout of the Day" href="/workouts/lower-abs-workout.html" rel="alternate"><img src="/images/grid/wod/2016/wod_nov8.jpg" alt="Workout of the Day"></a> </div> 

你可以做什么:与你选择的元素替换文档的身体,therby保留结构和信息方面的基础:

示例代码

WebView wv; 
Handler uiHandler = new Handler(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    wv = (WebView)findViewById(R.id.webView); 
    wv.setWebViewClient(new MyWebViewClient()); 

    new BackgroundWorker().execute(); 

} 

// load links in WebView instead of default browser 
private class MyWebViewClient extends WebViewClient { 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return false; 
    } 

    @RequiresApi(21) 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 
     view.loadUrl(request.getUrl().toString()); 
     return false; 
    } 
} 

private class BackgroundWorker extends AsyncTask<Void, Void, Void> { 

    @Override 
    protected Void doInBackground(Void... arg0) { 
     getDarewod(); 
     return null; 
    } 

    public void getDarewod(){ 

     try { 
      Document htmlDocument = Jsoup.connect("http://darebee.com/").get(); 
      Element element = htmlDocument.select("#gkHeaderMod > div.darewod").first(); 

      // replace body with selected element 
      htmlDocument.body().empty().append(element.toString()); 
      final String html = htmlDocument.toString(); 

      uiHandler.post(new Runnable() { 
       @Override 
       public void run() { 
        wv.loadData(html, "text/html", "UTF-8"); 
       } 
      }); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

} 
+1

It works !!!!!谢谢你的帮助 – user7129054

+0

不客气。 –

相关问题