R로 공공데이터 API호출하기

» R

TIL01 : R로 공공데이터 API호출하기

공공데이터 포털DATA web에 가서 필요한 데이터를 활용 신청하기.

활용신청 한 데이터의 일반 인증키가 꼭 필요하다.
참고 자료 문서를 참고하면 오류메시지를 파악해야할 때 도움이 된다.

지역 코드 목록 파일을 같이 활용해서 호출했다.

R Example:

setwd('/Users/jane/rdata/part8')
region_cd <- read.csv('/Users/jane/rdata/part8/region_cd.csv',
fileEncoding = 'CP949',encoding = 'UTF-8')

library(dplyr)
library(stringr)
library(data.table)
LAWD_CD <- region_cd %>% filter(region %like% '서울특별시') 
LAWD_CD <- LAWD_CD[,2]

temp <- merge(c(2010:2020), c(1:12))
temp$y <- if_else(temp$y<10, paste0(0,temp$y), as.character(temp$y))
temp
DEAL_YMD <- paste0(temp$x, temp$y) %>% as.integer()
DEAL_YMD

df <- NULL
API_KEY <- '해당 API KEY 넣기'

library(XML)
library(RCurl)
for (i in LAWD_CD) {
  print(i)
  for (l in DEAL_YMD) {
    url <- paste0('http://openapi.molit.go.kr/
    OpenAPI_ToolInstallPackage/service/
    rest/RTMSOBJSvc/getRTMSDataSvcAptTradeDev?
    LAWD_CD=11110&DEAL_YMD=201512&serviceKey=',
    API_KEY,'&numOFRows=100000')
    raw.data <- xmlTreeParse(url, 
    useInternalNodes = TRUE, encoding = "UTF-8")
    xml_rootnode <- try(xmlRoot(raw.data))
    xml_result <- xmlToDataFrame(xml_rootnode[[2]][['items']])
    df <- rbind(df, xml_result)
  }
}
raw.data


또 다른 방식 :

setwd('/Users/jane/rdata/part8')
region_cd <- read.csv('/Users/jane/rdata/part8/region_cd.csv',
fileEncoding = 'CP949',encoding = 'UTF-8')

library(dplyr)
library(stringr)
library(data.table)
LAWD_CD <- region_cd %>% filter(region %like% '서울특별시') 
LAWD_CD <- LAWD_CD[,2]

temp <- merge(c(2010:2020), c(1:12))
temp$y <- if_else(temp$y<10, paste0(0,temp$y), as.character(temp$y))
temp
DEAL_YMD <- paste0(temp$x, temp$y) %>% as.integer()
DEAL_YMD

df <- NULL
API_KEY <- '해당 API KEY 넣기'

library(XML)
library(RCurl)
for (i in LAWD_CD) {
  print(i) 
}
for (l in DEAL_YMD) {
    url <- paste0('http://openapi.molit.go.kr/
    OpenAPI_ToolInstallPackage/service/
    rest/RTMSOBJSvc/getRTMSDataSvcAptTradeDev?
    LAWD_CD=11110&DEAL_YMD=201512&
    serviceKey=위와같은 해당 APIKEY입력')
    raw.data <- xmlTreeParse(url, 
    useInternalNodes = TRUE, encoding = "UTF-8")
    xml_rootnode <- xmlRoot(raw.data)
    xml_result <- xmlToDataFrame(nodes = 
    getNodeSet(xml_rootnode,'//item'))
    df <- rbind(df, xml_result)
}
raw.data