如何从HTML表中获取特定标签值

时间:2014-03-19 19:04:04

标签: java html jsoup

首先,我想为我的英语道歉。我是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 &nbsp;spil 1</td> 
    <td>HH</td> 
   </tr> 
   <tr> 
    <td>AMETHYST 2</td> 
    <td>2327086</td> 
    <td>*</td> 
    <td>Busy</td> 
    <td>19-03-2014 &nbsp;spil 1</td> 
    <td>HH</td> 
   </tr> 
   <tr> 
    <td>AQUAPOLIS</td> 
    <td>6105002</td> 
    <td>*</td> 
    <td>&nbsp;</td> 
    <td>19-03-2014 &nbsp;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)

有什么方法可以做到这一点,非常感谢任何帮助。

1 个答案:

答案 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,您会看到获取检索。如果你想要消除并且&nbsp;存在是一致的那么;

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

中遇到的每个tr,取出第0个索引td

输出,

AQUAPOLIS
AQUAPOLIS
IMPERIAL 7
CHIMO
...

有关选择器语法的更多信息,请参阅here