2013-10-17 6 views
0

J'essaie d'analyser HTML en utilisant jsoup Parser pour Android. Si j'exécute mon code, je ne peux pas entrer dans la boucle for; l'exécution du programme s'arrête avant la boucle for (aucune erreur n'est émise).jsoup Parsing HTML à l'intérieur de la tâche asynchrone Android

J'avais mis le journal? Le même code quand je cours dans un projet java normal, je suis en mesure d'obtenir le résultat?

private class DownloadTwitterTask extends 
      AsyncTask<String, Void, List<String>> { 
     String content; 

     protected List<String> doInBackground(String... urls) { 


      try { 
       doc = Jsoup.connect("https://twitter.com/someperson/").get(); 


      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       Log.d("Exception", "Exception"); 

       e.printStackTrace(); 
      } 


      Elements elements = doc.getElementsByAttributeValue("class", 
        "js-tweet-text tweet-text"); 


      for (int j=0;j<elements.size();j++) { 


       Element tmp = elements.get(j); 
       String value = tmp.text(); 

       twitterList.add(value); 

      } 

      return twitterList; 

     } 

     protected void onPostExecute(List<String> result) { 

      tadaptor = new TwitterLazyAdaptor(INFOActivity.this, result); 
      // this.setListAdapter(fadaptor); 
      lv1.setAdapter(tadaptor); 

     } 
    } 
+1

Peut-être 'elements' est-il simplement vide? –

+0

Correct il est vide – user2580568

+0

Alors alors il n'y a rien à boucler et vous ne rentrerez pas dans votre 'for' :) –

Répondre

1

Vous pouvez essayer celui-ci:

doc.select(".js-tweet-text.tweet-text") 

Le. au début pour la classe, et le. avant "tweet-text" pour l'espace.

Mise à jour: J'ai comparé ma solution à la vôtre. Cela donne le même résultat.

Vous pouvez également essayer de définir l'agent utilisateur. Parfois, un site renvoie un html significativement différent.

 Document doc = Jsoup.connect("https://twitter.com/someperson/") 
       .userAgent("Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:24.0) Gecko/20100101 Firefox/24.0") 
       .get(); 
0

Vous devez également vérifier si "doc" est vide. S'il est vide, il y a peut-être un problème avec la connexion. Vous pouvez également faire une sélection comme ceci Elements elements = doc.select("p.js-tweet-text tweet-text"); où "p" est le tag que vous recherchez et puis l'attribut de classe. Aussi avez-vous mis en <uses-permission android:name="android.permission.INTERNET" /> et où vous exécutez DownloadTwitterTask

Questions connexes