我正在尝试提取一些数据(请参阅下面的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>
}
}
}
答案 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)");
但是,这要求您确信信息始终是正确的顺序。