首先,我想为我的英语道歉。我是Java和Jsoup编程的新手。我想从网站上获取一些数据。网站中的信息在HTML tabel中给出。我不需要表格中的所有字段。我用这个;
Document doc = Jsoup.connect("http://www.emo.nl/barges/en.html")
.data("query", "Java")
.userAgent("Mozilla")
.cookie("auth", "token")
.timeout(3000)
.post();
Element table1 = doc.select("table").first();//.getElementsByTag("td");//.getElementsByTag("td")
String body = table1.toString();
Document docb = Jsoup.parseBodyFragment(body);
Element bbd = docb.body();
String hhk = bbd.toString();
System.out.println(hhk);
此代码的结果为我提供了String中的所有Tabel。如下;
<body>
<table>
<tbody>
<tr>
<th>Name</th>
<th>Bargeno.</th>
<th>Reported present</th>
<th>Busy</th>
<th>Starting</th>
<th>Harbour</th>
</tr>
<tr>
<td>AMETHYST</td>
<td>2327085</td>
<td>*</td>
<td>Busy</td>
<td>19-03-2014 spil 1</td>
<td>HH</td>
</tr>
<tr>
<td>AMETHYST 2</td>
<td>2327086</td>
<td>*</td>
<td>Busy</td>
<td>19-03-2014 spil 1</td>
<td>HH</td>
</tr>
<tr>
<td>AQUAPOLIS</td>
<td>6105002</td>
<td>*</td>
<td> </td>
<td>19-03-2014 spil 1</td>
<td>HH</td>
</tr>
</tbody>
</table>
</body>
这对我来说太多了,我想让两个变量让我们说;
private String naam;
private String date;
and in name variabel i want to store first <td> tag (AMETHYST)
and in date variabel i want to put fifth <td> tag (19-03-2014)
有什么方法可以做到这一点,非常感谢任何帮助。
答案 0 :(得分:1)
一种方法是读取指定索引处的元素:
String naam = bbd.getElementsByTag("td").get(0).text();
String date = bbd.getElementsByTag("td").get(4).text();
System.out.println(naam + " " + date);
给出,
AMETHYST 19-03-2014 spil 1
修改强>
由于td包含&nbps; spil 1
,您会看到获取检索。如果你想要消除并且
存在是一致的那么;
System.out.println(naam + " " + date.substring(0, date.indexOf('\u00A0') - 1));
给出,
AMETHYST 19-03-2014
编辑2 :根据OP的查询获取表格中所有第一个td
的集合,请使用以下内容:
Elements tds = table1.select(" > tbody > tr > td:eq(0)");
for (Element el : tds) {
System.out.println(el.text());
}
其中> tbody > tr > td:eq(0)
针对table1
输出,
AQUAPOLIS
AQUAPOLIS
IMPERIAL 7
CHIMO
...
有关选择器语法的更多信息,请参阅here。