Jsoup查询,只解析特定元素

时间:2014-11-04 18:52:27

标签: java jsoup

我正在尝试提取一些数据(请参阅下面的HTML)。我想提取人力资源部门的人员。只有名字和姓氏。

HTML:

<tbody>
    <tr>
        <td>Peter</td>
        <td>Smith</td>
        <td>35</td>
        <td>HR</td>
    </tr>
    <tr>
        <td>Paul</td>
        <td>Roberts</td>
        <td>47</td>
        <td>Legal</td>
    </tr>
    <tr>
        <td>James</td>
        <td>Griffin </td>
        <td>23</td>
        <td>HR</td>
    </tr>
</tbody> 

我想要的提取物:

Peter Smith
James Griffin

到目前为止我得到了什么:

public class Extract {

    public static void main(String[] args) throws IOException {

        Document Page = Jsoup.connect("URL").get(); //pick up html
        Element List = Page.select("tbody").first();
        Elements Info = List.select("tr");

        for(Element value: Info)
        {
                System.out.println(value.select("td").first()); //first <td> ... </td>
                System.out.println(value.select("td").second() + "\n"); //??? Trying to take the second <td> ... </td>
        }

    }

}

1 个答案:

答案 0 :(得分:1)

我建议在所有具有名字和姓氏的td上放一个课程:

<td class="first-name">Peter</td>
<td class="last-name">Smith</td>
<td>35</td>
<td>HR</td>

然后在for循环中调用你的JSoup选择:

Element firstNames= value.select(".first-name");
Element lastNames= value.select(".last-name");

或者那些东西。关键是,选择使用类而不是更好,并确保你得到的只是名字。

如果您不控制输入,那么您也可以使用选择器:

Element firstNames= value.select("td:eq(0)");
Element lastNames= value.select("td:eq(1)");

但是,这要求您确信信息始终是正确的顺序。