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



>情况:我一直在尝试解析URL并检索正文标签之间的信息,并在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();
}
//--------------------------------------------------------------------
}
}

你在这里有几个问题:

首先,您尝试从 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中运行它,有关详细信息,请参阅此问题。

最新更新