안드로이드 개발 질문/답변
(글 수 45,052)
일주일동안 이곳저곳 찾아보면 여러가지 라이브러리와 여러가지 방법을 동원해보았지만 결국 잘 되지 않아서 이렇게 글 남깁니다.
< 파싱하고 싶은 내용>
<table border="0" cellspacing="1" width="100%" cellpadding="3" class="table3">
<tr>
<td class="tdtitle" width="30">번호</td>
<td class="tdtitle">등록번호</td>
<td class="tdtitle">소장처/자료실</td>
<td class="tdtitle">청구기호</td>
<td class="tdtitle">도서상태</td>
<td class="tdtitle">반납예정일</td>
<td class="tdtitle">예약</td>
<td class="tdtitle">SMS</td>
<td class="tdtitle">보존서고</td>
</tr>
<tr>
<td class="td1" align="center">1</td>
<td class="td1" align = left id='Location1_0' >E526635</td>
<td class="td1" align = left id='Location1_2' >중앙도서관 3층자연과학실 </td>
<td class="td1" align = left id='Location1_1' > 005.268 박9327안</td>
<td class="td1" align = left id='Location1_3' >대출중</td>
<td class="td1" align = left id='Location1_4' >2011.06.09</td>
<td class="td1" align = left id='Location1_5' Main_No="0001132006" Location="00000001" Accession_no="E00000526635" Place_no=" " LinkYN="Y" ><a href="javascript:handleLink("1","5","Reserve","Location"">예약가능(1 명 예약중)</a></td>
<td class="td1" align = center id='Location1_6' Accession_no="E00000526635" ><a href="javascript:handleLink("1","6","AccessionNo","Location""><IMG SRC="/DLSearch/TGUI/images/images19/LOC/ico_phone.gif" BORDER="0"></a></td>
<td class="td1" align = left id='Location1_7' Accession_no="E00000526635" Callno='005.268 박9327안' width="45"> </td><tr>
<td class="td1" align="center">2</td>
<td class="td1" align = left id='Location2_0' >E526636</td>
<td class="td1" align = left id='Location2_2' >중앙도서관 3층자연과학실 </td>
<td class="td1" align = left id='Location2_1' > 005.268 박9327안 c.2</td>
<td class="td1" align = left id='Location2_3' >대출중</td>
<td class="td1" align = left id='Location2_4' >2011.06.14</td>
<td class="td1" align = left id='Location2_5' Main_No="0001132006" Location="00000001" Accession_no="E00000526636" Place_no=" " LinkYN="" ><a href="javascript:handleLink("2","5","Reserve","Location""></a></td>
<td class="td1" align = center id='Location2_6' Accession_no="E00000526636" ><a href="javascript:handleLink("2","6","AccessionNo","Location""><IMG SRC="/DLSearch/TGUI/images/images19/LOC/ico_phone.gif" BORDER="0"></a></td>
<td class="td1" align = left id='Location2_7' Accession_no="E00000526636" Callno='005.268 박9327안 c.2' width="45"> </td></table>
<tr>
<td class="tdtitle" width="30">번호</td>
<td class="tdtitle">등록번호</td>
<td class="tdtitle">소장처/자료실</td>
<td class="tdtitle">청구기호</td>
<td class="tdtitle">도서상태</td>
<td class="tdtitle">반납예정일</td>
<td class="tdtitle">예약</td>
<td class="tdtitle">SMS</td>
<td class="tdtitle">보존서고</td>
</tr>
<tr>
<td class="td1" align="center">1</td>
<td class="td1" align = left id='Location1_0' >E526635</td>
<td class="td1" align = left id='Location1_2' >중앙도서관 3층자연과학실 </td>
<td class="td1" align = left id='Location1_1' > 005.268 박9327안</td>
<td class="td1" align = left id='Location1_3' >대출중</td>
<td class="td1" align = left id='Location1_4' >2011.06.09</td>
<td class="td1" align = left id='Location1_5' Main_No="0001132006" Location="00000001" Accession_no="E00000526635" Place_no=" " LinkYN="Y" ><a href="javascript:handleLink("1","5","Reserve","Location"">예약가능(1 명 예약중)</a></td>
<td class="td1" align = center id='Location1_6' Accession_no="E00000526635" ><a href="javascript:handleLink("1","6","AccessionNo","Location""><IMG SRC="/DLSearch/TGUI/images/images19/LOC/ico_phone.gif" BORDER="0"></a></td>
<td class="td1" align = left id='Location1_7' Accession_no="E00000526635" Callno='005.268 박9327안' width="45"> </td><tr>
<td class="td1" align="center">2</td>
<td class="td1" align = left id='Location2_0' >E526636</td>
<td class="td1" align = left id='Location2_2' >중앙도서관 3층자연과학실 </td>
<td class="td1" align = left id='Location2_1' > 005.268 박9327안 c.2</td>
<td class="td1" align = left id='Location2_3' >대출중</td>
<td class="td1" align = left id='Location2_4' >2011.06.14</td>
<td class="td1" align = left id='Location2_5' Main_No="0001132006" Location="00000001" Accession_no="E00000526636" Place_no=" " LinkYN="" ><a href="javascript:handleLink("2","5","Reserve","Location""></a></td>
<td class="td1" align = center id='Location2_6' Accession_no="E00000526636" ><a href="javascript:handleLink("2","6","AccessionNo","Location""><IMG SRC="/DLSearch/TGUI/images/images19/LOC/ico_phone.gif" BORDER="0"></a></td>
<td class="td1" align = left id='Location2_7' Accession_no="E00000526636" Callno='005.268 박9327안 c.2' width="45"> </td></table>
---------------------------------------------------------------------------------------------------
여기에서 '중앙도서관 3층 자연과학실' 이 부분과 '005.268 박9327안 c' 이 부분정보를 얻어오고 싶은데 어떻게 파싱을 하면 좋을까요. 구체적이지 않아도 좋으니 방법을 대략적으로 설명해주시면 정말 감사드리겠습니다 ^^ ㅜ
html 파일 출처 url - http://oasis.ssu.ac.kr/dlsearch/TGUI/Theme/Web/main.asp
2011.06.09 17:30:34
제가 jericho 파서를 이용하는 방법으로 파싱을 한다면..
아래처럼 파싱할것같습니다.
List trList = source.getAllElements(HTMLElementName.TR);
int count = trList.size();
for(int idx = 1; idx < count; idx++){ // 타이틀부분이 0번째 이고 1부터 실 자료 부분
Element trElement = (Element) trList.get(idx);
List tdList = trElement.getAllElements(HTMLElementName.TD);
Element location0 = (Element) tdList.get(1); // E526635
Element location2 = (Element) tdList.get(2); // 중앙도서관 3층자연과학실
String location2Text = location2.getTextExtractor().toString(); // 중앙도서관 3층자연과학실 텍스트 부분
Element location1 = (Element) tdList.get(3); // 005.268 박9327안
String location1Text = location1.getTextExtractor().toString(); // 005.268 박9327안 텍스트 부분
}




html 파싱할때 주로 사용하는 jericho 기준으로 말씀을 드리면..
<td class="td1" align = left id='Location2_2' >중앙도서관 3층자연과학실 </td>
이런 내용이 있을때 id가 Location2_2 이자너요..
이 id 값을 주어 해당 내용을 뽑아오는 함수가 있습니다..
id라는건 html에서 반드시 유일해야 하기땜에 이것이 겹치는 상황은 없습니다(물론 id가 겹친다고 html 페이지가 안보이는건 아니지만 일반적인 룰이 그렇습니다)
지금 뽑아오고자 하는 내용의 id가 각각 다른 값이기 때문에..
jericho에서 id를 주어 내용을 뽑아오는 함수를 이용하면 아주아주 쉽게 가져올수 있습니다..
jericho 사용 방법은 구글링 하세요..