在jsoup中选择正确的选择器

时间:2015-02-20 11:39:36

标签: jsoup

我是jsoup的新手,我很难理解我应该为以下html选择哪些选择器:

<div class="details">
<div></div>
<div></div>
<div></div>
<div>
     <b>
        Title :
    </b>
     dog
</div>
</div>

我需要为许多html页面执行此操作,并且每个页面都有不同的标题值(例如,dog,cat等)。那么,如果我希望我的java代码只能 &#34; dog&#34;字?可能采用以下格式:

Elements links = doc.select(???);

我只需要知道在&#34; ???&#34;的地方。

1 个答案:

答案 0 :(得分:0)

如果您只需要从每个页面中选择一个实例,则以下解决方案将起作用:

// select the first child of a div with class="details" that has a <b> tag child
Element titleDiv = doc.select("div.details div:has(b)").first();

// print out the text owned by the div (e.g. the animal's name)
System.out.println(titleDiv.ownText()); 

如果您需要在单个页面上选择此元素的多个实例,则以下内容也适用:

// select all divs that have <b> and are children of div.details
Elements titleDivs = divs.select("div.details div:has(b)");

for (Element div : titleDivs) {

    // call ownText to get the animal name
    System.out.println(div.ownText());
}

对于您的示例HTML,两者都将打印:

dog