Android Jsoup Example

Android JSoup Example

JSoup is really easy to use, look at these exemples from the JSoup cookbook:here

First, You have to connect to the webpage you want to parse using:

Document doc = Jsoup.connect("http://example.com/").get();

Then, you can select page elements using the JSoup selector syntax.

For instance, say you want to select all the content of the div tags with the id attribute set to test, you just have to use:

Elements divs = doc.select("div#test");

to retrieve the divs, then you can iterate on them using:

for (Element div : divs)
System.out.println(div.text());
}

HTML parsing Android Jsoup

The error says that the argument you are passing to Jsoup.connect is not valid (empty). It looks like you creating onClick listener to set value of linkurl, but you are starting parsing thread immediately, i.e. not waiting for linkurl value to be set. You can for example delay execution of the code by inserting this code in the begining of run method inside getinfoWebsite(): while(linkurl.isEmpty()) { Thread.sleep(1000);}

How to use Jsoup with Volley?

Can anyone write/link a simple example using volley and jsoup?

Under the hood, Jsoup make use of HttpUrlConnection. This class has known unresolved issues, bugs and performance issues on the Android Platform.

Instead, load the data with Volley first then parse it with Jsoup.

Sample Code:

private static RequestQueue myRequestQueue = null;

public Document GetDocument(String site) throws Exception {
final Document[] doc = new Document[1];
final CountDownLatch cdl = new CountDownLatch(1);

StringRequest documentRequest = new StringRequest( //
Request.Method.GET, //
site, //
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
doc[0] = Jsoup.parse(response);
cdl.countDown();
}
}, //
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// Error handling
System.out.println("Houston we have a problem ... !");
error.printStackTrace();
}
} //
);

if (myRequestQueue == null) {
myRequestQueue = Volley.newRequestQueue(this);
}

// Add the request to the queue...
myRequestQueue.add(documentRequest);

// ... and wait for the document.
// NOTE: Be aware of user experience here. We don't want to freeze the app...
cdl.await();

return doc[0];
}

References

  • An Introduction to Volley
  • Transmitting Network Data Using Volley

How to use Jsoup in an Android app to show certain text from a website?

I am using JSOUP to get "Current Version" from PlayStore to ForceUpdate the app, you can take help from my code :

 private class ForceUpdateAsync extends AsyncTask<Void, String, String> {

private Context context;
private String currentVersion;
private AppStartupThreadResponse response;

public ForceUpdateAsync(Context context, String currentVersion, AppStartupThreadResponse response) {
this.context = context;
this.currentVersion = currentVersion;
this.response = response;
}

@Override
protected String doInBackground(Void... voids) {
String newVersion = null;
try {
//HTML Parsing of the data coming from the url
Document document = Jsoup.connect("https://play.google.com/store/apps/details?id=com.vassar.unifiedapp.dmaedu&hl=en_IN")
.timeout(30000)
.userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"))
.referrer("http://www.google.com")
.get();
if (document != null) {

Elements element = document.getElementsContainingOwnText("Current Version");
for (Element ele : element) {
if (ele.siblingElements() != null) {
Elements sibElemets = ele.siblingElements();
for (Element sibElemet : sibElemets) {
newVersion = sibElemet.text();
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
return newVersion;
}

Jsoup query example Android

You can get the selector with your browser - open the page and press F12 to launch the developer tools. I use FireFox, but its quite the same for other browsers too - choose the Inspector tool and choose the element picker (FF - left most tool). After that choose the element you want to get and The browser will highlight the code that contains that element.
Place the mouse over the highligthed code, right click it and select Copy unique selector. Now you can use that selector for your Jsoup code.



Related Topics



Leave a reply



Submit