Reputation: 1402
I'm trying to parsing this website: http://sbaftv.superdriver.it/ro/asp/ricercaorari.asp?user=FTV1&CodProfilo=1&VisInternet=1&visnota=0 in particular way the options in Comune di Partenza
and Comune di Arrivo
but i can't do it. This is the code:
public class MainActivity extends Activity {
ListView lista;
static final String BLOG_URL = "http://sbaftv.superdriver.it/ro/asp/ricercaorari.asp?user=FTV1&CodProfilo=1&VisInternet=1&visnota=0";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lista = (ListView)this.findViewById(R.id.main_lista);//recupero lista da id
//creo ed eseguo l'asynctask
ParsingPaginaWeb parsing = new ParsingPaginaWeb();
parsing.execute("");
}
private class ParsingPaginaWeb extends AsyncTask<String,String,String> {
ArrayList<String> titoli; //lista dei titoli
//ArrayList<String> descrizioni; //lista delle descrizioni
@Override
protected void onPreExecute()
{
//prima di eseguire il parsing inizializzo gli arraylist
titoli = new ArrayList<String>();
//descrizioni = new ArrayList<String>();
}
@Override
protected String doInBackground(String... params) {
try {
Document doc = Jsoup.connect(BLOG_URL).get(); //E' il sito dove faccio il parsing
// prelevo l'h3 cioè il titolo di ogni sezione e poi ciclo tutto
Elements nodeBlogStats = doc.select("div.comunePartINI");
for(Element sezione : nodeBlogStats)//per ogni sezione tra gli elementi ricavati prima
{
titoli.add(sezione.text());
//descrizioni.add(descrizione);
}
} catch (Exception e) {
// In caso di errore
Log.e("ESEMPIO", "ERRORE NEL PARSING");
}
return null;
}
@Override
protected void onPostExecute(String result)
{
// dopo che ho eseguito il parsing mostro i dati nella listview
// usando il custom array adpater ParsingArrayAdapter
ParsingArrayAdapter adapter = new ParsingArrayAdapter(MainActivity.this, titoli);
lista.setAdapter(adapter);
}
}
}
the application display a empty activity. Any ideas?
Upvotes: 1
Views: 147
Reputation: 1531
That's because you are not parsing data correctly. It is returning zero elements. I have modified you parsing code. The following code extracts all the options of Comune di Partenza.
Use the following code in your try block
doc = Jsoup.connect(BLOG_URL).get();
Elements nodeBlogStats = doc.select("#comunePartINI > option");
for(Element sezione : nodeBlogStats)
{
titoli.add(sezione.text());
}
Also its a good practice to return the result from asynctask and use it in onPostExecute rather than defining a field of a class and then modifying it.
Upvotes: 1
Reputation: 3807
Your selector is trying to retrieve a 'div' node with a 'comunePartINI' class attribute. I think you really need to retrive are the 'option' nodes contained in a 'select' node with a 'comunePartINI' id attribute:
Elements nodeBlogStats = doc.select("select#comunePartINI > option");
for(Element sezione : nodeBlogStats)//per ogni sezione tra gli elementi ricavati prima
{
titoli.add(sezione.text());
}
Regards.
Upvotes: 0