gpt4 book ai didi

java - 如何使用类名获取HTML内容?

转载 作者:行者123 更新时间:2023-12-02 11:51:41 24 4
gpt4 key购买 nike

我正在尝试创建一个类,它使用 jsoup 库来创建网站中元素的对象。
阅读文档后,这就是我所拥有的:

public class storyObj {
public String title;
public String preview;
public String date;
String url = "http//:davisclipper.com";
Bitmap bitmap;

private class Title extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
try {
Document doc = Jsoup.connect(url).get();
Elements storyTitle = doc.getElementsByClass("story_item_title");
title = storyTitle.attr("content");
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}

public String getTitle(){
return title;
}

在我的主要 Activity 中,我设置了一个 TextView 来获取返回的标题:

storyObj story = new storyObj();
String text = story.getTitle();

TextView title = (TextView) findViewById(R.id.main_title);
title.setText(text);

我得到的只是一个空字符串。

最佳答案

您似乎误解了线程的工作原理。 Jsoup 在后台发生。同时,您将继续在主线程上设置文本,但不能保证您拥有

您需要将异步任务移至 Activity 中。

并且您需要为其实现一个 onPostExecute,您将在其中 title.setText(text);

您还需要使 doInBackground 返回标题

像这样

this.title = (TextView) findViewById(R.id.main_title);

new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... params) {
try {
Document doc = Jsoup.connect(url).get();
Elements storyTitle = doc.getElementsByClass("story_item_title");
return storyTitle.attr("content");
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
public void onPostExecute(String content) {
MainActivity.this.title.setText(content);
}
}.execute();
<小时/>

除非这个网站是由 Javascript 动态生成的,否则 Jsoup 是错误的库。不过,不确定本地新闻网站是否那么先进

关于java - 如何使用类名获取HTML内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47841493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com