有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java jsoup从<a>标记中的标记获取文本

我想打印<span>标记内的文本,该标记位于<a>标记内。 我想打印<span class="rep-score">37</span>内的37

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

共 (1) 个答案

  1. # 1 楼答案

    您的代码没有发送登录堆栈溢出所需的任何凭据,因此您将获得未注册用户的as响应页面,该页面不包含任何<span class="rep-score">37</span>标记

    你可以试试

    顺便说一句,如果你想选择<a ..>和几个类,只需将它们与a.class1.class2组合,而不是a.class1 class2,因为这样的选择器会试图找到a.class1,然后在其中找到<class2 ..>标记

    因此,如果您能够通过jsoup登录并获得doc,其中真正包含span,您应该能够使用

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