安卓和Jsoup

4
我想要提取网站的一部分内容。我决定使用Jsoup,因为它可以让我获取需要的网站部分并在webview中显示已经获取的html部分。这似乎很简单,但我尝试运行我的应用程序却没有成功。以下是我的代码。哪里出了问题?
注意:如果有其他更简单的方法,请给我提示!但是我想要实时获取内容,好吗? 感谢大家!

public class RestauranteUniversitarioActivity 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("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");
} 

}

3个回答

2

问题很可能是您正在主(UI)线程中解析网页。这将锁定UI / 导致应用程序冻结。将doc = Jsoup.connect("http://www.iguatu.ce.gov.br/").get();移动到后台线程,例如使用AsyncTask(Intent)Service


1

如果你正在寻找一种替代的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://dev59.com/qWTVa4cB1Zd3GeqP_xl1").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


请检查Jsoup.connect(...)中的URL,并将“androi-”替换为“android-”。 - rghome

0

很遗憾,我没有足够的声望在 Dira 的答案下发表评论。 请检查 Jsoup.connect(...) 中的 URL,并将 "androi-" 替换为 "android-"。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接