안녕하세요.

 

jericho 파싱중에 IndexOutOfBoundsException 오류에 관한 문제에 대해 답을 얻고자 질문드립니다.

 

 String yourUrl = "http://www.inje.ac.kr/template/Bsub_page.asp?Ltype=5&Ltype2=3&Ltype3=3&Tname=S_Food&Ldir=board/S_Food&Lpage=s_food_view";

 

위 url을 통해 아래와 같이 필요한 테이블의 문자열을 파싱해옵니다.

 

여기서 문제가 발생하더군요.

 

public String getHtmltoText(String sourceUrlString) {
  //  Source source = null;
    String content = null;
    try {
     URL sUrl= new URL("sourceUrlString);     
        InputStream is = sUrl.openStream();        
        Source source=new Source(new InputStreamReader(is,"euc-kr"));
         
        source.fullSequentialParse();

        Element table = (Element)source.getAllElements(HTMLElementName.TABLE).get(14);
        Element tr = (Element)table.getAllElements(HTMLElementName.TR).get(0);
        Element td = (Element)tr.getAllElements(HTMLElementName.TD).get(0);
        Element table1 = (Element)td.getAllElements(HTMLElementName.TABLE).get(0);
        Element tr1 = (Element)table1.getAllElements(HTMLElementName.TR).get(4);
        Element td1 = (Element)tr1.getAllElements(HTMLElementName.TD).get(2);
        content = td1.getTextExtractor().toString();

 } catch (Exception e) {
  e.printStackTrace();
 }
 return content;
   }

 

 

 

기존에는 문제없이 되었는데 홈페이지 업데이트 이후에 홈페이지의 테이블이 변경되어 새로이 파싱을 하기위해

 

변경된 테이블에 맞게 다시 수정중에 아래 값을 파싱해오기위해  위와 같이 코딩하였습니다.

 

  <tr  class="table_td_bottomB">
    <TD rowspan=2 class='table_td_bottomB'><B>점심</B></TD><TD class='table_td_leftbottomC'><B>A</B></TD>
      <td class="table_td_leftbottomC">(즉석)순대국밥<br>비빔쫄면<br>고추,양파,쌈장<br><br>&nbsp;</td>
      <td class="table_td_leftbottomC">(즉석)돌솥반계탕<br>(300개한정)<br>찍초,양파,쌈장,겉절이<br>&nbsp;</td>
      <td class="table_td_leftbottomC">(즉석)뚝배기콩불<br>모듬쌈+쌈장<br>미트볼케찹조림<br>&nbsp;</td>
      <td class="table_td_leftbottomC">(즉석)돌솥홍합탕<br>매운두부조림<br>김구이+유장<br>&nbsp;</td>
      <td class="table_td_leftbottomC">(즉석)뚝배기해물짬뽕<br>탕수육+소스<br>물만두<br>&nbsp;</td>

   </tr>

 

 

순대국밥이 getAllElements(HTMLElementName.TD).get(2);
돌솥반계탕이 getAllElements(HTMLElementName.TD).get(3);

 

순으로 뽑아오는데요

 

처음 파싱해올때는 순대국밥 , 뚝배기콩불, 뚝배기 해물짬뽕 만 가지고오고

 

돌솥반계탕과 돌솥홍합탕은 IndexOutOfBoundsException  이 발생합니다.

 

두번쨰 다시 받을때는 돌솥 반계탕과 돌솥 홍합탕만 받아오고 나머지는 IndexOutOfBoundsException  이 발생합니다.

 

어떻게 오류를 잡아주어야 할지.. 정말 답답허네요 ㅠㅠ.. 방법없을까요?