Jsoup
Jsoup이란 Html을 가져오고 파싱을 도와주는 자바 라이브러리이다.
자바와 완벽히 호환이 되는 Kotlin으로 Jsoup을 사용해보자
implementation 'org.jsoup:jsoup:1.11.3'
파싱할 정보
이번에 파싱할 정보는 등수 별 당첨 인원이다. 당첨 번호의 목록은 api로 제공되지만 순위 별 당첨번호는 제공하지 않기 때문이다.
파싱할 Html 형식을 보면 가져와야할 데이터들은 <table> - <tbody> - <tr> 계층구조에 존재한다.
위와 같은 예로 A>B>C 계층 구조의 태그를 파싱할 때는 공백으로 구분한다.
regex
table tbody tr
code
val url = "https://dhlottery.co.kr/gameResult.do?method=byWin"
val doc = Jsoup.connect(url).timeout(1000 * 10).get() //타임아웃 10초
val contentData : Elements = doc.select("table tbody tr")
파싱된 <tr> 태그의 객체들은 하나의 Element가 되고, 이들이 모여 Elements가 되고 이 값이 contentData 변수에 알맞게 들어온 것을 확인할 수 있다.
순위 , 등위별 당첨금액, 당첨게임 수 모두 <td>에 존재해서 순서대로 불러오면 된다.
for(data in contentData) {
val element = data.select("td")
val lank = element[0].text() //순위 : 1등, 2등...
val money = element[3].text() //당첨마다 받는 돈
val person = element[2].text() //당첨된 사람의 수
}
그렇다면 element[1]은 등위별 총 당첨금액이다. 하지만 총 금액은 사실 상 큰 의미가 있지 않아 파싱하지 않았다.
완성 결과
이렇게 LottoLike의 새로운 기능 완성
반응형
'Android > Common' 카테고리의 다른 글
[Android] 바인딩 서비스로 음악 재생 (0) | 2020.04.29 |
---|---|
[Android] DataBinding 정리 (0) | 2020.04.25 |
[Android] Firebase ML Kit - Translate에 대한 소개 (6) | 2020.03.29 |
[Android]SharedPreferences by Kotlin (0) | 2020.03.27 |
[Android] 음성 인식 기능 추가하는 방법 정리 (0) | 2020.03.26 |