How to get HTML content using class name?
I'm trying to create a class which uses the jsoup library to make an object of elements from a website.
After reading the documentation, this is what I have:
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;
}
In my main activity I set a TextView to get the returned title:
storyObj story = new storyObj();
String text = story.getTitle();
TextView title = (TextView) findViewById(R.id.main_title);
title.setText(text);
All I get is an empty string.
java android jsoup
add a comment |
I'm trying to create a class which uses the jsoup library to make an object of elements from a website.
After reading the documentation, this is what I have:
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;
}
In my main activity I set a TextView to get the returned title:
storyObj story = new storyObj();
String text = story.getTitle();
TextView title = (TextView) findViewById(R.id.main_title);
title.setText(text);
All I get is an empty string.
java android jsoup
Your url is wrong, no? Are you sure this website is not dynamically generates by Javascript? If so, Jsoup is the wrong library
– cricket_007
Dec 16 '17 at 1:50
add a comment |
I'm trying to create a class which uses the jsoup library to make an object of elements from a website.
After reading the documentation, this is what I have:
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;
}
In my main activity I set a TextView to get the returned title:
storyObj story = new storyObj();
String text = story.getTitle();
TextView title = (TextView) findViewById(R.id.main_title);
title.setText(text);
All I get is an empty string.
java android jsoup
I'm trying to create a class which uses the jsoup library to make an object of elements from a website.
After reading the documentation, this is what I have:
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;
}
In my main activity I set a TextView to get the returned title:
storyObj story = new storyObj();
String text = story.getTitle();
TextView title = (TextView) findViewById(R.id.main_title);
title.setText(text);
All I get is an empty string.
java android jsoup
java android jsoup
edited Nov 20 '18 at 20:49
Frank
156
156
asked Dec 16 '17 at 0:35
dustinos3dustinos3
4491717
4491717
Your url is wrong, no? Are you sure this website is not dynamically generates by Javascript? If so, Jsoup is the wrong library
– cricket_007
Dec 16 '17 at 1:50
add a comment |
Your url is wrong, no? Are you sure this website is not dynamically generates by Javascript? If so, Jsoup is the wrong library
– cricket_007
Dec 16 '17 at 1:50
Your url is wrong, no? Are you sure this website is not dynamically generates by Javascript? If so, Jsoup is the wrong library
– cricket_007
Dec 16 '17 at 1:50
Your url is wrong, no? Are you sure this website is not dynamically generates by Javascript? If so, Jsoup is the wrong library
– cricket_007
Dec 16 '17 at 1:50
add a comment |
1 Answer
1
active
oldest
votes
You seem to be misunderstanding how threads work. The Jsoup happens in the background. Meanwhile, you're continuing on the main thread with setting the text, which you're not guaranteed to have
You need to move the async task into the activity.
And you need to implement a onPostExecute for it where you will title.setText(text);
You also need to make the doInBackground return title
Like so
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();
Unless this website is dynamically generated by Javascript, Jsoup is the wrong library though. Not sure if a locals news site is that advanced, though
Thanks for your help. I’ll have to look into other options then.
– dustinos3
Dec 16 '17 at 2:18
This should work, did you try?
– cricket_007
Dec 16 '17 at 9:14
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f47841493%2fhow-to-get-html-content-using-class-name%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You seem to be misunderstanding how threads work. The Jsoup happens in the background. Meanwhile, you're continuing on the main thread with setting the text, which you're not guaranteed to have
You need to move the async task into the activity.
And you need to implement a onPostExecute for it where you will title.setText(text);
You also need to make the doInBackground return title
Like so
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();
Unless this website is dynamically generated by Javascript, Jsoup is the wrong library though. Not sure if a locals news site is that advanced, though
Thanks for your help. I’ll have to look into other options then.
– dustinos3
Dec 16 '17 at 2:18
This should work, did you try?
– cricket_007
Dec 16 '17 at 9:14
add a comment |
You seem to be misunderstanding how threads work. The Jsoup happens in the background. Meanwhile, you're continuing on the main thread with setting the text, which you're not guaranteed to have
You need to move the async task into the activity.
And you need to implement a onPostExecute for it where you will title.setText(text);
You also need to make the doInBackground return title
Like so
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();
Unless this website is dynamically generated by Javascript, Jsoup is the wrong library though. Not sure if a locals news site is that advanced, though
Thanks for your help. I’ll have to look into other options then.
– dustinos3
Dec 16 '17 at 2:18
This should work, did you try?
– cricket_007
Dec 16 '17 at 9:14
add a comment |
You seem to be misunderstanding how threads work. The Jsoup happens in the background. Meanwhile, you're continuing on the main thread with setting the text, which you're not guaranteed to have
You need to move the async task into the activity.
And you need to implement a onPostExecute for it where you will title.setText(text);
You also need to make the doInBackground return title
Like so
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();
Unless this website is dynamically generated by Javascript, Jsoup is the wrong library though. Not sure if a locals news site is that advanced, though
You seem to be misunderstanding how threads work. The Jsoup happens in the background. Meanwhile, you're continuing on the main thread with setting the text, which you're not guaranteed to have
You need to move the async task into the activity.
And you need to implement a onPostExecute for it where you will title.setText(text);
You also need to make the doInBackground return title
Like so
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();
Unless this website is dynamically generated by Javascript, Jsoup is the wrong library though. Not sure if a locals news site is that advanced, though
edited Dec 16 '17 at 2:00
answered Dec 16 '17 at 1:53
cricket_007cricket_007
81.2k1142111
81.2k1142111
Thanks for your help. I’ll have to look into other options then.
– dustinos3
Dec 16 '17 at 2:18
This should work, did you try?
– cricket_007
Dec 16 '17 at 9:14
add a comment |
Thanks for your help. I’ll have to look into other options then.
– dustinos3
Dec 16 '17 at 2:18
This should work, did you try?
– cricket_007
Dec 16 '17 at 9:14
Thanks for your help. I’ll have to look into other options then.
– dustinos3
Dec 16 '17 at 2:18
Thanks for your help. I’ll have to look into other options then.
– dustinos3
Dec 16 '17 at 2:18
This should work, did you try?
– cricket_007
Dec 16 '17 at 9:14
This should work, did you try?
– cricket_007
Dec 16 '17 at 9:14
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f47841493%2fhow-to-get-html-content-using-class-name%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Your url is wrong, no? Are you sure this website is not dynamically generates by Javascript? If so, Jsoup is the wrong library
– cricket_007
Dec 16 '17 at 1:50