什么选择器用于Jsoup

时间:2013-09-29 08:28:07

标签: java android parsing selector jsoup

我正在尝试从下面的代码中获取网站上的信息,该网站有一个表格,在该表格中是特定区域的“潮汐”时间,当我尝试使用jsoup来获取该时间时返回分配数据,但没有一个是我想要的时间。

如何选择该数据?

代码:

docTide =
  Jsoup.connect(
     "http://www.tide-forecast.com/locations/Falmouth-England/tides/latest" )
         .timeout(600000).get();
Elements tideTableRows = docTide.select("table.tide tr:eq(1), td:eq(1)");
tideTimes = tideTableRows.text(); 
System.out.println(tideTimes);

1 个答案:

答案 0 :(得分:1)

带有id="Tide"的表格用Javascript填充,JSoup报告静态DOM,而不是动态DOM。解决问题的另一种方法是使用浏览器的附加组件来调查Javascript提供的“实时”DOM。

<div align="center" class="not_in_print">
<h2>Today's tide times for Falmouth, England</h2>
<table id="tide">
    <tr>
    <th>&nbsp;</th>
    <th>Time now:</th>
    <th>Next HIGH tide</th>
    <th>Next LOW tide</th>
  </tr>
    <tr>
    <th>Local time</th>
    <td><input type="text" value="" name="localtime" id="localtime"/></td>
    <td><input type="text" value="" name="hightime" id="hightime"/></td>
    <td><input type="text" value="" name="lowtime" id="lowtime"/></td>
  </tr>
    <tr>
    <th>Countdown</th>
    <td>&nbsp;</td>
    <td><input type="text" value="" name="highcountdown" id="highcountdown"/></td>
    <td><input type="text" value="" name="lowcountdown" id="lowcountdown"/></td>
  </tr>
</table>

资源: