2016-03-06 2693 views
0

我想打印<span>標籤裏面的文本,該標籤位於<a>標籤內。 我要打印37裏面<span class="rep-score">37</span>jsoup從<a>標籤中獲取文本標籤

<a href="//stackoverflow.com" 
     class="site-link js-gps-track" 
     data-id="1" 
     data-gps-track=" 
      site.switch({ target_site:1, item_type:3 }), 
     site_switcher.click({ item_type:1 })"> 
     <div class="site-icon favicon favicon-stackoverflow" title="Stack Overflow"></div> 
     Stack Overflow 
      <span class="rep-score">37</span> 
</a> 

下面是我寫這樣做的代碼,但沒有被打印出來。
有人可以解釋爲什麼它不起作用。

import java.io.IOException; 
import org.jsoup.Jsoup; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 
import org.jsoup.*; 
import org.jsoup.nodes.*; 
import java.io.*; 

import org.jsoup.nodes.Document; 
class Repoo 
{ 
    static int count=0; 
    // String html; 
    public static void main(String s[])throws IOException 
    { 
     try{ 
    // Document doc=Jsoup.connect("http://www.javatpoint.com/java-tutorial").get(); 
    // Document doc=Jsoup.connect("http://stackoverflow.com/").get(); 
    Document doc = Jsoup 
    .connect("http://www.stackoverflow.com") 
    .userAgent("Google Chrome/48.0.2564.116 m") 
    .get(); 

    // System.out.println("doc"); 
    // Elements link=(Elements)doc.select("span[class]"); 
    // Elements select=doc.select(".site-icon favicon favicon-stackoverflow"); 
    Elements select=doc.select("a.site-link js-gps-track > span.rep-score"); 

    // Elements link=(Elements)doc.select("div"); 

    // Elements link = doc.select("span").first(); 
    // Elements link = (Elements)doc.select("span"); 
    // Elements link = (Elements)doc.select("a[href]"); 

for(Element el: select) 
{ 
    // System.out.print("-"); 
    // String repo=el.attr("class"); 
    System.out.println(el.text()); 
    // System.out.println(el.ownText()); 




// if(repo.equals("rep-score")) 
// { 
// System.out.println(el.attr("class")); 
// System.out.println(el.text()); 
// } 
    // System.out.println(el.attr("id")); 
    // count++; 

    // String str=el.attr("href"); 
    // System.out.println(str); 

} 
// System.out.println("<"+count+">"); 
}catch(IOException e){System.out.println(e);} 
} 
} 
+0

哪裏是你的Java代碼來選擇呢? – Reimeus

+0

對不起,我粘貼的代碼沒有發佈。 – a874

+0

@ Reimeus,現在我該如何發佈我的代碼。幫助 – a874

回答

2

您的代碼沒有派登錄到堆棧溢出所以你正在爲不包含任何<span class="rep-score">37</span>標籤未註冊的用戶響應頁面所需的任何憑據。

你可以嘗試

順便說一句,如果你想要選擇<a ..>與少數類簡單地將它們與a.class1.class2而不是a.class1 class2,因爲這樣的選擇器將嘗試找到a.class1和th en <class2 ..>標記。

所以,如果你將能夠通過jsoup登錄並獲得doc這實際上將包含span你應該能夠

Elements select=doc.select("a.site-link.js-gps-track > span.rep-score"); 
//          ^-we combine few classes with `.` 
+0

我已登錄到網站 – a874

+0

有人可以幫忙嗎? ?? – a874

+0

@ a874你是什麼意思「我已經登錄到網站」?如果您認爲您已登錄您的瀏覽器,請嘗試使用其他瀏覽器並登錄其他帳戶。 jsoup應該返回哪個值?答案是「不是」,因爲關於啓動會話的信息應該只屬於瀏覽器而不能共享。嘗試將Jsoup想象成單獨的瀏覽器(非常簡單,因爲它甚至不能執行JavaScript)。 – Pshemo