为什么循环不在Jsoup中执行?

时间:2017-04-18 11:58:16

标签: java jsoup

我正在尝试为传奇页面的联盟做一个网络剪贴簿。我想从这里http://gameinfo.euw.leagueoflegends.com/en/game-info/champions/首先获得所有冠军的名单。

但是,我无法弄清楚为什么我的循环无效。

这是我的代码:

    Document doc = Jsoup.connect("http://gameinfo.euw.leagueoflegends.com/en/game-info/champions").get();
Elements span = doc.select("div#champion-grid-container > div.content-border > div#champion-grid-content > div.rg-box-container rg-display-Riot.champions.GridView > ul > li");
if(span != null){
    System.out.println("The class grid exist!!");
    Elements lista = span.select("li#champion-grid-aatrox");
    if(lista != null){
        System.out.println("li#champion-grid-aatrox Exist!!");
    }else{
        System.out.println("Nop :(");
    }
    Elements maidep = lista.select("div.champ-name");
    if(maidep != null){
        System.out.println("div.champ-name Exist!!");
    }else{
        System.out.println("Nop :(");
    }
    Elements maidep2 = maidep.select("a[href]");
    if(maidep2 != null){
        System.out.println("a Exist!!");
    }else{
        System.out.println("Nop :(");
    }
    for(Element nuj : maidep2)
    System.out.println("Content is " + nuj.text());
}
else {
    System.out.println("Class Grid Nop:(");
}

我知道选择这样的div是一个不好的做法,起初我试图在一个选择中一直到那个特定的元素,但它没有返回任何东西,所以我想通过每个div / parent直到我到了那里,看看它丢失了。输出是这样的:

The class grid exist!!
li#champion-grid-aatrox Exist!!
div.champ-name Exist!!
a Exist!!

因此甚至没有显示“内容是”消息。

1 个答案:

答案 0 :(得分:1)

根据JSoup docElements.select()

  

返回已过滤的元素列表,如果没有匹配则返回空列表。

因此检查Element是否为null不足以判断您的选择器是否与任何元素匹配。您应该检查是否elements.size() > 0,并且您可能会发现您的某个选择器没有匹配任何内容。

您可以使用this site实时尝试选择器并节省一些时间。