반응형
오픈API를 활용한 대기오염정보 조회(4)
Chocochip
2018년 1월 1일
이 자료는 R markdown에서 작성하였습니다.
오픈API를 활용한 대기오염정보 조회(1)
오픈API를 활용한 대기오염정보 조회(2)
오픈API를 활용한 대기오염정보 조회(3)
시도별 실시간 측정정보 조회
라이브러리 불러오기
##install.packages("rvest")
##install.packages("XML")
##install.packages("data.table")
library(rvest)
library(XML)
library(data.table)
시도 구분코드 준비
웹주소에 한글이 적혀 있으면 정상적으로 조회가 안되드라구요. 왜 그런지 ㅡ.ㅡ;;
어쩔 수 없이 모든 시도 웹 주소를 미리보기로 조회해서 해당 코드를 복사했습니다.
sido<-c("%EC%84%9C%EC%9A%B8","%EB%B6%80%EC%82%B0","%EB%8C%80%EA%B5%AC","%EC%9D%B8%EC%B2%9C",
"%EA%B4%91%EC%A3%BC","%EB%8C%80%EC%A0%84","%EC%9A%B8%EC%82%B0","%EA%B2%BD%EA%B8%B0",
"%EA%B0%95%EC%9B%90","%EC%B6%A9%EB%B6%81","%EC%B6%A9%EB%82%A8","%EC%A0%84%EB%B6%81",
"%EC%A0%84%EB%82%A8","%EA%B2%BD%EB%B6%81","%EA%B2%BD%EB%82%A8","%EC%A0%9C%EC%A3%BC",
"%EC%84%B8%EC%A2%85")
sido_name<-c("서울", "부산", "대구", "인천", "광주", "대전", "울산",
"경기", "강원", "충북", "충남", "전북", "전남", "경북", "경남",
"제주", "세종")
#names(Sido)<-sido_name
자료 저장 및 조회
url1 <- "http://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getCtprvnRltmMesureDnsty?serviceKey="
serviceKey <- "9x8WeUtQ1a6VrfDnAAN3PDJhSp4VFdoqfopYR4K31SeTR08xHjM3W05qW13HYEdKtOAu3U4RSeOfErde0EP2ng%3D%3D"
url2 <- "&numOfRows=100&pageSize=1&pageNo=1&startPage=1&sidoName="
ver <- "&ver=1.3"
air_poll <- list()
air_pollution <- list()
for(j in 1:17){
api_url <- paste(url1,serviceKey,url2,sido[j],ver, sep="")
air_raw<- xmlTreeParse(api_url,useInternalNodes = T, encoding = "UTF-8")
rootNode <- xmlRoot(air_raw)
items = rootNode[[2]][["items"]]
size=xmlSize(items)
air_emp <- data.frame()
air_poll <- list()
for(i in 1:size)
{
test <- xmlSApply(items[[i]],xmlValue)
air_emp <- data.table(Province=sido_name[j], stationName=test[[1]], mangName=test[[2]],
Time=test[[3]], so2=test[[4]], co=test[[5]], o3=test[[6]],
no2=test[[7]], pm10=test[[8]], pm1024=test[[9]],
pm25=test[[10]], pm2524=test[[11]], khai=test[[12]],
khaigrade=test[[13]], so2grade=test[[14]], cograde=test[[15]],
o3grade=test[[16]], no2grade=test[[17]], pm10grade=test[[18]],
pm25grade=test[[19]], pm101hgrade=test[[20]], pm251hgrade=test[[21]])
air_poll[[i]]=air_emp
}
air_pollution[[j]]=air_poll
}
air_poll_final <- list()
for(i in 1:17){
air_poll_final[[i]] <- rbindlist(air_pollution[[i]])
}
air_poll_final <- rbindlist(air_poll_final)
조회 결과 확인하기
View(air_poll_final)
총 346개 자료가 조회되었습니다. 다음에는 이 자료를 활용해서 그래프로 표현하는 방법에 대해 알아보겠습니다.
반응형
'R 크롤링' 카테고리의 다른 글
[R] 디아블로3 API를 활용하여 직업별 상위 랭킹 세팅 분포 구하기 두번째날 (0) | 2018.03.12 |
---|---|
[R] 디아블로3 API를 활용하여 직업별 상위 랭킹 세팅 분포 구하기 첫번째날 (0) | 2018.03.03 |
오픈API를 활용한 대기오염정보 조회(3) (0) | 2017.12.31 |
오픈API를 활용한 대기오염정보 조회(2) (2) | 2017.12.30 |
오픈API를 활용한 대기오염정보 조회(1) (0) | 2017.12.29 |