2016-03-06 2702 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