2012-10-31 2 views
0

J'essaye d'imprimer tirer le texte de "10 - 50" using jsoup mais je ne peux pas sembler tirer correctement. Voici le code HTML:Tirer les données jsoup

<dd> 
     <time itemprop="datePublished">21 October 2012</time> 
     </dd> 
     <dt> 
     Current Version: 
     </dt> 
     <dd itemprop="softwareVersion"> 
     1.0 
     </dd> 
     <dt itemprop="operatingSystems" content="Android"> 
     Requires Android: 
     </dt> 
     <dd> 
     2.3.3 and up 
     </dd> 
     <dt> 
     Category: 
     </dt> 
     <dd> 
     <a href="xxx">Entertainment</a> 
     </dd> 
     <dt> 
     Installs: 
     </dt> 
     <dd itemprop="numDownloads"> 
     10 - 50 
     <div class="normalized-daily-installs-chart" style="width: 105px;"> 
     <img src="xxx" /> 
     <p>last 30 days</p> 
     </div> 
     </dd> 
     <dt> 
     Size: 
     </dt> 
     <dd itemprop="fileSize"> 
     12M 
     </dd> 

J'ai essayé ce code mais il imprime « 1.0 10-50 30 derniers jours 12M € 0,69 Tout le monde »

import java.io.IOException; 
import java.io.InputStream; 

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 

public class googletest { 
    public static void main(String[] args) throws IOException { 

     Document doc = Jsoup 
       .connect("private url" 
         ) 
       .get(); 
     Elements spans = doc.select("dd[itemprop]"); 
     System.out.println(spans.text()); 

    } 

} 

je tout simplement envie d'imprimer la chaîne 10 - 50 par lui-même pas d'autres valeurs, merci.

+0

J'ai modifié la question –

Répondre

1

Je vois deux problèmes. D'abord, vous devez renforcer votre expression select pour qu'elle ne renvoie que des éléments dont itemprop est égal à numDownloads ex [itemprop=numDownloads] Maintenant, votre variable spans devrait avoir une collection d'éléments avec un seul élément. Vous pouvez accéder à cet élément en utilisant spans.first() Une fois que vous avez un seul élément, vous pouvez utiliser la méthode ownText() pour renvoyer le texte qui est un enfant direct de l'élément (en évitant le texte de tout autre élément enfant).

public class googletest { 
    public static void main(String[] args) throws IOException { 

     Document doc = Jsoup 
       .connect("private url" 
         ) 
       .get(); 
     Elements spans = doc.select("dd[itemprop=numDownloads]"); 
     System.out.println(spans.first().ownText()); 

    } 

} 
0

s'il vous plaît essayer

Element dts = doc.select("dd[itemprop]").get(0); 
    System.out.println(dts.text());