이런 데이터는 노가다 안해도 이미 다 만들어둔 사람들이 있을 거라고 조언을 들었는데
역시나 공공데이터포털에서 API로 제공하고 있었다
간만에 세금이 제대로 쓰이는 현장을 목격한 듯 하여 매우 뿌듯
본론으로 넘어가서 공휴일 데이터를 추출해보겠다
1. API 키 발급
https://www.data.go.kr/dataset/15012690/openapi.do
"특일 정보" 라는 제목으로 API 를 제공하고 있다
"(천문우주정보) 국경일정보, 공휴일정보, 24절기정보, 잡절정보를 조회하는 서비스 입니다"
라고 소개하고 있는데, 천문우주정보라니 뭔가 우습기도...
아무튼 "활용신청" 버튼을 눌러 API 키를 발급받자
그러면 로그인이 필요한 서비스라고하니...
회원가입 > 로그인 을 해준다
센스없게 Internet Explorer 9 이상에 최적화되었다고 기타 브라우저는 사용이 불가능하니 참고하도록하자
여튼 시키는대로 이것저것 써넣고나면 API 키가 발급된다
마이페이지 들어가서 노란색 칠해놓은 저기 들어가면 인증키를 확인할 수 있다
2. 데이터 추출
이후는 뭐 그냥 R로 API 콜하고 받은 XML 데이터 파싱하고... 뭐 그게 전부다
예시로 2017년 공휴일을 뽑아보겠다
suppressWarnings({
library(glue)
library(XML)
library(stringr)
})
api.key <- '1에서 발급받은 인증키'
url.format <-
holiday.request <-
function(key, year, month) glue(url.format)
# request and read data : year 2017
for(m in 1:12){
data <- xmlToList(holiday.request(api.key, 2017, str_pad(m, 2, pad=0)))
items <- data$body$items
for(item in items){
if(item$isHoliday == 'Y') print(paste(item$dateName, item$locdate, sep=' : '))
}
}
참고로 glue 함수는 format string 처리하는 함수고,
str_pad 함수는 숫자 앞에 0 넣어서 '8'이 아니라 '08' 로 값을 넣기 위해 사용하였다
정부에서 관리하니 업데이트 문제도 없고...
대체공휴일 같은 것도 알아서 처리할테니
DB화 시켜서 PHP School 등에 돌아다니는 달력류보다 운영상의 이점이 있다고 하겠다
'PHP 프로그래밍' 카테고리의 다른 글
CMS (0) | 2018.01.14 |
---|---|
PHP 이카운트 연동 (0) | 2018.01.14 |
euc-kr에서 독일어 (0) | 2018.01.08 |
그누보드 자동로그인 (0) | 2018.01.08 |
[그누보드] 외부로그인 핸드폰인증 (0) | 2017.12.29 |