如何使用Android中的Jsoup解析来自网站的数据

时间:2014-05-12 11:01:20

标签: android parsing jsoup

我正在开发一个应用程序,我希望网站中的某些数据显示在活动中。为此,我使用Jsoup来解析数据。但我收到错误:

org.jsoup.nodes.Document document = Jsoup.connect(url).get();

这是我下面的完整代码,我不知道我做错了什么......

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.select.Elements;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.DocumentsContract.Document;
import android.app.Activity;
import android.view.Menu;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;

public class Events extends Activity 
{
    //WebView web1;
    TextView t1;
    String url="https://sites.google.com/site/holyfamilychurchpestomsagar/notices-for-the-week";
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_events);

        t1=(TextView)findViewById(R.id.textView1);
        Title t2=new Title();
        t2.execute();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.events, menu);
        return true;
    }

    private class Title extends AsyncTask<Void, Void, Void> {
        Elements title;
        String desc;

        @Override
        protected void onPreExecute()
        {
            super.onPreExecute(); 
        }

        @Override
        protected Void doInBackground(Void... params) {
            try {
                // Connect to the web site
                org.jsoup.nodes.Document document = Jsoup.connect(url).get();
                // Get the html document title
                title = document.select("meta[name=title]");
                desc = title.attr("content");

            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
        @Override
        protected void onPostExecute(Void result)
        {
            // Set title into TextView
            t1.setText(desc);
        }
    }

}

1 个答案:

答案 0 :(得分:0)

  

设备在线吗?好的,我确定你想到了;-)是你   确定它正是这条线?你在catch子句中运行了吗?   应用程序崩溃了吗?

     

使用jsoup时,应始终添加空指针检查,   因为当选择过程不成功时,方法会   返回null!

     

你可以发布你的堆栈跟踪吗?

好的,当应用程序崩溃时,我非常不知道它不是连接本身,而是下面的一行。添加对空指针的检查,或添加一个catch子句。