Android Jsoup解析所有正文文本的URL

时间:2017-07-25 19:06:03

标签: java android jsoup

情况:我一直在尝试解析网址并检索正文标记之间的信息并在Android文本视图中进行设置。

问题:出现问题和/或丢失......

代码:

    package jsouptutorial.androidbegin.com.jsouptutorial;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.TextView;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.nodes.TextNode;
    import org.jsoup.select.Elements;
    import java.io.File;
    import java.io.IOException;
    public class MainActivity extends AppCompatActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            TextView textOut = (TextView)findViewById(R.id.rootTxtView);


//------------------Something went wrong here-------------------------------
            Document doc;
            try {
                //doc = Jsoup.connect("https://stackoverflow.com/questions/45311629/android-jsoup-parsing-url-for-all-body-text").get();
                doc = Jsoup.parse(new File("https://stackoverflow.com/questions/45311629/android-jsoup-parsing-url-for-all-body-text"), "UTF-8");

                Elements desc = doc.select("a.body");

                textOut.setText((CharSequence) desc);  //Setting textView to a String

            } catch (IOException e) {
                e.printStackTrace();
            }
//--------------------------------------------------------------------


        }
    }

1 个答案:

答案 0 :(得分:1)

你有几个问题:

首先,您尝试从URL创建File对象,这将抛出IOException。您想要使用JSoup方法从URL

中检索文档
Document doc = Jsoup.connect("https://stackoverflow.com/questions/45311629/android-jsoup-parsing-url-for-all-body-text").get();

下一个问题是您的元素选择doc.select("a.body")。这是尝试用一类主体选择所有锚标签<a> - 并且没有。要让身体只使用doc.body()

同样正如cricket_007所提到的那样,你正在尝试来自主线程的网络请求,所以它会抛出一个NetworkOnMainThreadException最简单的方法,就是在AsyncTask中运行它,see this question for details.