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

Jericho 파싱...

0 추천
package ***.***

import net.htmlparser.jericho.Element;
import net.htmlparser.jericho.HTMLElementName;
import net.htmlparser.jericho.Source;

import java.net.URL;
import java.util.ArrayList;

public class Parser {
    public Parser(){

    }

    public static ArrayList<TrackingListViewItem> getData(String strURL){
        Source source;
        ArrayList<TrackingListViewItem> list = new ArrayList<>();
        try{
            URL url = new URL(strURL);
            source = new Source(url);
            source.fullSequentialParse();
            Element tbody = source.getAllElements(HTMLElementName.TBODY).get(2);
            Element tr = null;
            int tr_count = tbody.getAllElements(HTMLElementName.TR).size();
            for(int i=1; i<=tr_count; i++)
            {
                list.add(new TrackingListViewItem());
                tr = tbody.getAllElements(HTMLElementName.TR).get(i);   // tr을 하나씩 돌아가면서 가져옴

                list.get(i-1).setDay((tr.getAllElements(HTMLElementName.TD).get(0)).getContent().toString());   //첫번째 td 가져오기 첫번째 td는 day
                list.get(i-1).setTime((tr.getAllElements(HTMLElementName.TD).get(1)).getContent().toString());
                list.get(i-1).setLocation((tr.getAllElements(HTMLElementName.TD).get(2)).getContent().toString());
                list.get(i-1).setStatus((tr.getAllElements(HTMLElementName.TD).get(3)).getContent().getTextExtractor().toString());
            }

        }catch(Exception e){
            e.printStackTrace();
        }
        return list;  // 입력된 배열값을 리턴
    }
}

----------------------------------------------------------------------------------------------------------------------

 Runnable task = new Runnable() {
            public void run() {
                list = Parser.getData(parsing_url);
            }
        };

        thread = new Thread(task);
        thread.start();

        try {
            thread.join();  // 쓰레드 작업 끝날때까지 다른 작업들은 대기
        } catch (Exception e) {
            e.printStackTrace();
        }

jericho로 html파싱을 하려는데... 뭐가 문제인건지 리스트에 아무것도 안들어가네요... 파싱을 여러 액티비티에서 해야해서 Parser클래스를 따로 만들었는데.... 첫번째 코드는 파서 클래스 코드이고.... 두번째 코드는 파싱 메소드 호출했을 때 코드입니다...

Irene_86 (140 포인트) 님이 2016년 4월 19일 질문

답변 달기

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