ABOUT ME

dddd-

Today
-
Yesterday
-
Total
-
  • [Jericho] jericho를 이용해 html 파싱
    Android/개발 2017. 1. 28. 01:01

    jericho lib를 이용하여 로또 당첨정보 파싱하기


        





    로또 api

    http://www.nlotto.co.kr/common.do?method=getLottoNumber&drwNo=[회차번호]

    // 회차번호가 비어있으면 최근 회차


    - 로또 당첨정보를 가져올 수 있는 api가 존재합니다.

      하지만 위 주소로 접속해보시면 알다시피 [당첨번호, 1등 총 당첨금, 1등 1인당 당첨금, 1등 당첨자 수, 추첨일] 등

      1등 당첨에 대한 정보만 가져오실 수 있습니다.


      ex) 실제 json 값

      {

        "bnusNo":36,

        "firstWinamnt":1634191091,

        "totSellamnt":71768122000,

        "returnValue":"success",

        "drwtNo3":28,

        "drwtNo2":27,

        "drwtNo1":23,

        "drwtNo6":43,

        "drwtNo5":42,

        "drwtNo4":38,

        "drwNoDate":"2017-01-21",

        "drwNo":738,

        "firstPrzwnerCo":11

      }


      그렇기 때문에 해당 회차에 대한 모든 등수 정보를 가져오기 위해서 html 파싱을 사용하였습니다.







    1. gradle에 jericho 추가

    dependencies {
    compile 'net.htmlparser.jericho:jericho-html:3.4'
    }




    2. manifest에 permission 추가

    <uses-permission android:name="android.permission.INTERNET"/>




    3. data parsing(date 가져오기)

    parsing_url = "http://www.nlotto.co.kr/gameResult.do?method=byWin&drwNo=[조회할회차]";

    Runnable runnable = new Runnable() {
    @Override
    public void run() {
    getData(parsing_url);
    }
    };

    Thread thread = new Thread(runnable);
    try {
    thread.start();
    thread.join();
    } catch(Exception e) {

    }

    private void getData(String strUrl) {
    Source source;
    try {
    URL url = new URL(strUrl + "&drwNo=738");
    source = new Source(url);

    // date 가져오기

    // 모든 H3 태그를 가져와 리스트에 담음
    List<Element> listH3 = source.getAllElements(HTMLElementName.H3);

    for (int i = 0; i < listH3.size(); i++) {
    Element element = listH3.get(i);

    // H3태그의 class 값을 가져옴
    String attributeValue = element.getAttributeValue("class");
    if (attributeValue != null) {

    // class 값이 result_title 이면
    if (attributeValue.equalsIgnoreCase("result_title")) {
    // H3태그의 class 값이 result_title 인 Element 에서 첫 번째 SPAN 태그를 가져옴
    element = element.getAllElements(HTMLElementName.SPAN).get(0);

    String date = element.getTextExtractor().toString();
    // date 가공
    // (2017년 01월 21일 추첨) -> 2017.01.21.
    date = date.replace("(", "");
    date = date.replace("년 ", ".");
    date = date.replace("월 ", ".");
    date = date.replace("일 ", ".");
    date = date.replace("추첨)", "");
    }
    }
    }

    } catch (Exception e) {
    Log.
    d("error :::: ", e.getMessage());
    }
    }





    - 위 소스에서는 date정보만 가져왔지만 이러한 방법으로 당첨번호, 1~5등 당첨금, 당첨자 수 등

      다른 정보도 가져오실 수 있습니다.


      이상 jericho를 이용한 html 파싱 방법이었습니다.










    댓글

Designed by Tistory.