현재.. 파싱하려는 html 은 구조는 다음과 같습니다.
<table cellspacing="0" cellpadding="2" width="100%" class="schedule" border="0" bgColor="#9c9a9c" >
<tr align="center" bgcolor="#4E6815" class="style31" height=22>
<td width="63">1</td>
<td width="62">2</td>
<td width="130">3</td>
<td width="42">4</td>
<td width="42">5/td>
<td width="42">6</td>
<td width="44">7</td>
<td width="44">8</td>
<td width="44">9</td>
<td width="44">10</td>
<td width="130">11</td>
<td width="60">12</td>
</tr>
tr을 이용하여 td 값들을 가져오는데,
td값이 12개 /3개 12개 /3개/ 12개/ 3개 이런식으로 반복됩니다.
무조건 12개를 채우기 위해 검색하다보니 noSearch가 뜨는데,
각 카운트에 맞게 뽑아오려고 lengh, count, size 를 찾아봤지만 없네요..
임의로 소스상에서 갯수를 정해주기보다 가져오는 값의 td 값에 따라 for를 놀리려는데 어떻게 설정해주면 될까요?
파싱을다음과 같이 합니다.
class가 schedule인 table을 찾아서 그 안에 있는 tr을 모두 가져오고..
tr 안에 있는 td값을 items의 갯수만큼 돌려 가져와 매칭합니다.
td값이 고정적으로 12개면 문제가 안되는데
12개 3개 12개 3개 12개 3개 이런식으로 반복되다보니.. 예외를 해준다고 해도 안먹네요.
어떻게 처리를 하면 좋을까요?
String res = new String(super.handleResponse(response).getBytes("8859_1"), "euc-kr");
Document doc = Jsoup.parse(res);
Elements rows = doc.select("table.schedule tr");
String[] items = new String[] { "TD1", "TD2", "TD3", "TD4", "TD5", "TD6", "TD7", "TD8", "TD9", "TD10", "TD11", "TD12"};
for (Element row : rows) {
Iterator<Element> iterElem = row.getElementsByTag("td").iterator();
StringBuilder builder = new StringBuilder();
for (String item : items) {
builder.append(item + ": " + iterElem.next().text() + " \t");
}
System.out.println(builder.toString());
}
return res;