2012-05-22 29 views
4

我试图带一部分网站的内容。我决定使用Jsoup,因为有了它,我可以把你想要的网站的一部分,并在webview中播放这个撤回的HTML部分。这似乎很容易,但我试图运行我的应用程序,并没有工作。以下是我的代码。他究竟怎么了?Android和Jsoup

注意:如果有另一个更简单的方法来做到这一点,请通过我提示!但我想实时获取内容,好吗? 谢谢大家!

公共类RestauranteUniversitarioActivity延伸活动{

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    WebView cardapio = (WebView)findViewById(R.id.web_engine); 

    cardapio.getSettings().setJavaScriptEnabled(true); 

    String data = ""; 

    Document doc = null; 
    try { 
    doc = Jsoup.connect("http://www.iguatu.ce.gov.br/").get(); 
    } 
    catch (IOException e) { 
    e.printStackTrace(); 
    } 

    Elements content = doc.getElementsByClass("dest-left"); 
    if(content.size() > 0) { 
     data = content.get(1).text(); 
    } 
      cardapio.loadData(data, "text/html", "UTF-8"); 
} 

}

回答

1

参考this thread如果你正在寻找一种替代HTML解析器。

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 

import android.app.Activity; 
import android.os.Bundle; 
import android.webkit.WebView; 

public class HtmlParserActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     WebView cardapio = (WebView) findViewById(R.id.web_engine); 
     cardapio.getSettings().setJavaScriptEnabled(true); 
     String data = ""; 
     Document doc = null; 
     try { 
      doc = Jsoup.connect("https://stackoverflow.com/questions/10695350/androi-and-jsoup").get(); 
      Elements elements = doc.getElementsByClass("post-tag"); 
      for(Element element : elements) { 
       data += element.outerHtml(); 
       data += "<br/>"; 
      } 
      cardapio.loadData(data, "text/html", "UTF-8"); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

参考Jsoup Cookbook

+0

来自Alessandro Forcuti:请检查Jsoup.connect(...)中的网址,并将“androi-”替换为“android-” – rghome

2

问题是最有可能是因为您解析主(UI)线程的网页。这会锁定用户界面/导致您的应用冻结。将doc = Jsoup.connect("http://www.iguatu.ce.gov.br/").get();移动到后台线程,例如使用AsyncTask(Intent)Service

0

不幸的是,我没有足够的评论来回复Dira的评论。 请检查Jsoup.connect(...)中的网址,并用“android-”替换“androi-”