-
[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 파싱 방법이었습니다.
'Android > 개발' 카테고리의 다른 글
[BottomNavigationView] 안드로이드 BottomNavigationView 아이템 고정 (9) 2018.10.28 [BottomNavigationView] 안드로이드 BottomNavigationView 사용하기 (36) 2018.10.27 [뒤로가기 두번 눌러 종료] 안드로이드 뒤로가기 두번 눌러서 종료하기 (4) 2018.10.26 [CustomListView] 안드로이드 커스텀 리스트뷰 아이템 클릭 (18) 2017.02.18 [CustomListView] 안드로이드 커스텀 리스트뷰 (2) 2017.02.07 댓글