2013-10-04 31 views
0

有沒有辦法檢查一個表是否有使用jsoup的某一行?檢查表數據 - 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> 
+0

定義 「一定行」。如果你發佈了一個你正試圖解析的HTML樣本,它可能會有所幫助。 – Josh

+0

由某一行我指的是表中的最後一行,即「偶數」行。將發佈樣本 –

回答

2

要簡單地檢查Elements對象的大小,使用size()方法,以確定它是否存在與否。

要檢查某個Element使用方法。

您也可以考慮使用循環遍歷Elements集合中的所有Element對象。


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

嗨,謝謝.size完美的作品。你比'Reimeus'快1分鐘,所以你可以得到答案。謝謝 –

1

你可以做

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

嗨,感謝您的答案和.size方法。 '丹尼爾B'快1分鐘,所以他首先得到答案,但仍然給你一個upvote。謝謝。 –