【问题标题】:Check for table data - Jsoup检查表数据 - Jsoup
【发布时间】:2013-10-04 20:50:43
【问题描述】:

有没有办法使用jsoup检查一个表是否有某一行?

我收到java.lang.IndexOutOfBoundsException: Invalid location 1, size is 1 异常,我从表格中获取信息的代码是:

  docTide = Jsoup.connect("http://www.mhpa.co.uk/search-tide-times/").timeout(600000).get();
  Elements tideTimeOdd = docTide.select("div.tide_row.odd div:eq(0)");
  Elements tideTimeEven = docTide.select("div.tide_row.even div:eq(0)");
  Elements tideHightOdd = docTide.select("div.tide_row.odd div:eq(2)");
  Elements tideHightEven = docTide.select("div.tide_row.even div:eq(2)");
  Element firstTideTime = tideTimeOdd.first();
  Element secondTideTime = tideTimeEven.first();
  Element thirdTideTime = tideTimeOdd.get(1);
  Element fourthTideTime = tideTimeEven.get(1);

发生异常是因为有时该表只有 3 行而不是 4 行,按此顺序; 奇怪的 甚至 奇怪的 甚至

这是导致问题的最后一个“偶数”行。

  <div class="tide_row odd"> 
  <div class="time">00:57</div>
  <div class="height_m">4.9</div>
  <div class="height_f">16,1</div>
  <div class="range_m">1.9</div>
  <div class="range_f">6,3</div>
  </div>
  <div class="tide_row even">
  <div class="time">07:23</div>
  <div class="height_m">2.9</div>
  <div class="height_f">9,6</div>
  <div class="range_m">2</div>
  <div class="range_f">6,7</div>
  </div>
  <div class="tide_row odd">
  <div class="time">13:46</div>
  <div class="height_m">5.1</div>
  <div class="height_f">16,9</div>
  <div class="range_m">2.2</div>
  <div class="range_f">7,3</div>
  </div>
  <div class="tide_row even">
  <div class="time">20:23</div>
  <div class="height_m">2.8</div>
  <div class="height_f">9,2</div>
  <div class="range_m">2.3</div>
  <div class="range_f">7,7</div>
  </div>

【问题讨论】:

  • 定义“某一行”。如果您发布了一个您尝试解析的 HTML 示例,这可能会有所帮助。
  • 某行是指表中的最后一行,即“偶数”行。将发布样本

标签: java android jsoup indexoutofboundsexception


【解决方案1】:

要简单地检查Elements 对象的大小,请使用size() 方法来确定它是否存在。

要检查某个Element,请使用contains() 方法。

您还可以考虑使用循环来遍历您的 Elements 集合中的所有 Element 对象。


if(tideTimeEven.size() > 1)
    //Do something

【讨论】:

  • 嗨,感谢 .size 完美运行。你比'Reimeus'快1分钟,所以你得到了答案。谢谢
【解决方案2】:

你可以的

if (tideTimeEven.size() > 1) {
    Element fourthTideTime = tideTimeEven.get(1);
}

【讨论】:

  • 您好,感谢您的回答和 .size 方法。 'Daniel B' 快了 1 分钟,所以他先得到答案,但仍然给你一个赞成票。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-29
  • 2017-07-01
  • 2014-03-01
  • 2017-08-17
  • 1970-01-01
  • 2021-10-27
  • 2015-08-30
相关资源
最近更新 更多