2012-10-31 31 views
0

我想打印使用jsoup拉「10-50」的文本,但我似乎無法正確拉它。下面是HTML代碼:拉數據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> 

我試過這個代碼,但它打印 「1.0 10 - 50最近30天12M€0.69所有人」

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()); 

    } 

} 

我只是簡單地想打印字符串10 - 50本身沒有其他價值,謝謝。

+0

我編輯了這個問題 –

回答

1

我看到兩個問題。首先,您需要加強您的選擇表達式,以便它只返回itemprop等於numDownloads的元素ex [itemprop=numDownloads]現在您的spans變量應該只有一個元素的集合,只有一個元素。您可以使用spans.first()來訪問此元素。一旦有了單個元素,就可以使用ownText()方法返回作爲元素的直接子元素的文本(避免任何其他子元素的文本)。

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

請儘量

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