Android/개발

[Jericho] jericho를 이용해 html 파싱

시계는 와치 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 파싱 방법이었습니다.