VBA를 활용한 기상청 기후정보포털 크롤링 자동화
본문 바로가기
카테고리 없음

VBA를 활용한 기상청 기후정보포털 크롤링 자동화

by 장원급제. 2024. 8. 30.
반응형

기상청 기후정보포털(climate.go.kr)에서 원하는 지역, 기간, 요소 등을 선택하여 이미지를 다운로드하고 CSV 데이터를 받는 작업은 많은 반복 작업을 요구합니다. 이러한 작업을 자동화하면 시간을 절약할 수 있으며, 보다 효율적으로 데이터를 수집할 수 있습니다. 이 글에서는 VBA(Visual Basic for Applications)를 활용해 엑셀에서 간편하게 해당 작업을 자동화하는 방법을 설명합니다.

 

1. VBA로 웹 크롤링 가능성

VBA는 인터넷 익스플로러(IE) 또는 다른 웹 브라우저를 자동으로 제어하여 웹 페이지에서 데이터를 수집하는 데 사용할 수 있습니다. 기상청 기후정보포털에서 특정 옵션을 선택하고 데이터를 다운로드하는 작업을 VBA로 자동화할 수 있습니다. VBA를 활용하면 사용자가 엑셀 시트에 입력한 정보를 바탕으로 자동으로 웹 페이지를 탐색하고 필요한 데이터를 다운로드할 수 있습니다.

엑셀 VBA 크롤링#3 _ 인공지능 비서가 날씨를 알려준다? (youtube.com)

 

2. 필요한 VBA 코드 개요

아래 코드는 VBA를 활용해 기상청 기후정보포털에서 특정 데이터를 자동으로 다운로드하는 샘플 코드입니다. 이 코드는 인터넷 익스플로러를 제어하여 원하는 지역, 기간, 요소를 선택하고 이미지를 다운로드하는 작업을 수행합니다.

Sub DownloadClimateData()
    Dim ie As Object
    Dim url As String
    Dim region As String
    Dim element As String
    Dim startDate As String
    Dim endDate As String
    Dim downloadButton As Object

    ' 인터넷 익스플로러 초기화
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True

    ' 기상청 기후정보포털 URL 설정
    url = "https://www.climate.go.kr/home/bbs/board.do?bcd=102&key=189"

    ' 웹 페이지 열기
    ie.navigate url

    ' 페이지 로딩 대기
    Do While ie.Busy Or ie.readyState <> 4
        DoEvents
    Loop

    ' 지역, 요소, 기간 설정
    region = "서울특별시"  ' 사용자가 선택한 지역
    element = "평균기온"  ' 사용자가 선택한 요소
    startDate = "2001-01-01"  ' 시작 날짜
    endDate = "2020-12-31"  ' 종료 날짜

    ' 지역 선택
    ie.document.getElementById("regionSelector").Value = region
    ' 요소 선택
    ie.document.getElementById("elementSelector").Value = element
    ' 기간 선택
    ie.document.getElementById("startDate").Value = startDate
    ie.document.getElementById("endDate").Value = endDate

    ' 조회 버튼 클릭
    ie.document.getElementById("searchButton").Click

    ' 페이지 로딩 대기
    Do While ie.Busy Or ie.readyState <> 4
        DoEvents
    Loop

    ' 다운로드 버튼 찾기 (CSV 파일 다운로드)
    Set downloadButton = ie.document.getElementById("csvDownloadButton")

    ' 다운로드 버튼 클릭 (CSV 파일 다운로드)
    If Not downloadButton Is Nothing Then
        downloadButton.Click
    Else
        MsgBox "다운로드 버튼을 찾을 수 없습니다."
    End If

    ' 인터넷 익스플로러 종료
    ie.Quit
    Set ie = Nothing
End Sub

 

3. 코드 설명

  • 인터넷 익스플로러 초기화: CreateObject("InternetExplorer.Application")를 사용하여 IE를 초기화하고 웹 페이지를 엽니다.
  • 지역, 요소, 기간 설정: 사용자가 선택한 지역, 요소, 기간을 엑셀 시트에서 읽어와 웹 페이지의 해당 필드에 입력합니다.
  • 조회 버튼 클릭: 사용자가 설정한 값을 바탕으로 조회 버튼을 클릭하여 데이터를 검색합니다.
  • CSV 다운로드: 조회 결과 페이지에서 CSV 다운로드 버튼을 찾아 클릭하여 데이터를 다운로드합니다.

 

4. 한계 및 고려사항

  • 인터넷 익스플로러 사용: VBA에서는 주로 인터넷 익스플로러를 사용해 웹 페이지를 자동화합니다. 그러나 최신 브라우저에서는 호환성이 떨어질 수 있습니다. 이 경우 Selenium 같은 외부 라이브러리를 사용하는 것이 좋습니다.
  • 요소 선택: 웹 페이지의 구조가 변경되면, 선택자의 ID나 클래스명이 바뀔 수 있어 코드가 정상 작동하지 않을 수 있습니다. 이때는 선택자를 업데이트해야 합니다.

 

이와 같이 VBA를 활용하여 반복적인 웹 작업을 자동화할 수 있습니다. 코드를 실행하기 전, 반드시 기상청 기후정보포털의 구조를 확인하고 코드에서 사용하는 선택자가 올바른지 확인하는 것이 중요합니다.

반응형