마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

html파싱시 없는태그 처리방법

0 추천
html파싱으로 데이터를 받아오고 있는 학생입니다.

제가 받아올려는 데이터가 총 89개 데이터 입니다.

그래서 파싱시 소스가 아래와 같습니다.

public ArrayList<String> getActor(String strURL){
        Source source;
        get_actor = "";
        arrayactor = new ArrayList();

        try {

            URL nurl = new URL(strURL);
            source = new Source(nurl);
            Element element,elementlink= null;

            List<Element> list = source.getAllElementsByClass("info_txt1");

            for (int i=0;i<list.size();i++){
                element = list.get(i);
                elementlink = element.getAllElements(HTMLElementName.DD).get(2);

                if(elementlink==null || elementlink.equals("") == true){
                    get_actor = "없음";
                }else{
                    TextExtractor textExtractor = elementlink.getTextExtractor();
                    get_actor = textExtractor.toString();
                }

                arrayactor.add(get_actor);

            }

        }catch (Exception e){

        }

        return arrayactor;

    }

 

제가 받을려는 html 페이지에서 class명이 info_txt1의 모든 내용을 받아와서

그것만틈 for문으로 돌립니다.

그리고 그 클래스명이 info_txt1인 태그 안에서

<DD></DD>

<DD></DD>

<DD></DD> <- 요녀석을 찾기위해 위에처럼 적었습니다. (HTMLElementName.DD).get(2);)

처음에 이렇게 해서 실행을 시키니

89개의 데이터가 아니라 28개의 데이터만 뽑아왔습니다.

왜그런가 싶어서 보았더니 29번째 데이터에는 태그가

<DD></DD>

<DD></DD>

이렇게 2개의 DD 태그만 존재하였습니다.

그래서 아마 여기서 멈춘거 같은데...

이거 해당하는 태그가 없을때 처리해주는 방법이 없을까요?

그래서 저는 위와 같은 방법을 사용했지만 안되네요ㅠㅠㅠ

 if(elementlink==null || elementlink.equals("") == true){
                    get_actor = "없음";
                }else{
                    TextExtractor textExtractor = elementlink.getTextExtractor();
                    get_actor = textExtractor.toString();
                }

                arrayactor.add(get_actor);

꼭 그부분을 파싱해야 되는데

중간지점에 데이터에서는 세번째 DD 태그가 없으니 죽어버리네요...ㅠㅠ

이거예외처리하는방법 없을까요?
익명사용자 님이 2015년 12월 24일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...