웹 자동화는 현대 데이터 분석 및 수집 작업에서 매우 중요한 역할을 하고 있습니다. 이를 위해 다양한 도구와 기술이 존재하지만, VBA(Visual Basic for Applications)와 Selenium을 결합하면 강력한 웹 스크래핑 및 자동화 도구를 만들 수 있습니다.
이번 글에서는 VBA와 Selenium을 활용하여 웹 자동화를 구현하는 방법에 대해 자세히 알아보도록 하겠습니다.
SeleniumBasic 설치하기
엑셀 VBA에서 Selenium을 사용하기 위해서는 먼저 SeleniumBasic이라는 도구를 설치해야 합니다. SeleniumBasic은 VBA 환경에서 Selenium을 사용할 수 있도록 변환해주는 도구입니다.
따라서 이 도구 없이는 Selenium을 사용할 수 없습니다.
설치 과정
-
SeleniumBasic 다운로드: SeleniumBasic GitHub 페이지로 이동하여 최신 버전의 설치 파일인
SeleniumBasic-2.0.9.0.exe
를 다운로드합니다. -
설치 실행: 다운로드한 파일을 실행하면, 설치 마법사가 시작됩니다. Next 버튼을 클릭하여 진행합니다. 사용 약관에 동의하고 기본적으로 제공되는 모든 컴포넌트를 선택한 후, 설치를 시작합니다.
-
설치 완료: 설치가 완료되면 Finish 버튼을 클릭하여 마법사를 종료합니다. 이 단계에서 SeleniumBasic이 성공적으로 설치되었음을 알 수 있습니다.
단계 | 설명 |
---|---|
1 | SeleniumBasic 다운로드 |
2 | 설치 파일 실행 및 약관 동의 |
3 | 설치 완료 |
그러나 SeleniumBasic을 설치했다고 해서 바로 사용할 수 있는 것은 아닙니다. 사용자의 Chrome 브라우저 버전에 맞는 ChromeDriver를 추가로 설치해야 합니다.
ChromeDriver 설치하기
Selenium은 웹 브라우저와 상호작용하기 위해 브라우저 드라이버가 필요합니다. Chrome 브라우저를 사용할 경우, ChromeDriver가 필요합니다.
ChromeDriver는 Chrome 브라우저의 버전과 일치해야 하므로, 먼저 현재 설치된 Chrome 브라우저의 버전을 확인해야 합니다.
Chrome 버전 확인 방법
- Chrome 브라우저를 열고, 우측 상단의 점 세 개 아이콘을 클릭합니다.
- ‘도움말’ 메뉴에서 ‘Chrome 정보’를 선택합니다.
- 표시된 버전 정보를 확인합니다.
이제 ChromeDriver를 다운로드할 준비가 되었습니다. ChromeDriver 다운로드 페이지로 이동하여, 확인한 Chrome 버전에 맞는 드라이버를 다운로드합니다.
다운로드한 ChromeDriver 파일을 %appdata%\Local\SeleniumBasic
폴더에 압축을 풀어 넣습니다.
단계 | 설명 |
---|---|
1 | Chrome 브라우저 버전 확인 |
2 | ChromeDriver 다운로드 |
3 | ChromeDriver 파일 압축 해제 및 위치 지정 |
이제 VBA에서 Selenium을 사용하기 위한 기본적인 설정이 완료되었습니다.
VBA 환경에서 Selenium 사용하기
Selenium을 사용하기 위해서는 VBA 환경에서 특정 참조 설정을 해야 합니다. 다음 단계에 따라 진행합니다.
참조 설정
- VBA 편집기 열기: 엑셀에서 Alt + F11 키를 눌러 VBA 편집기를 엽니다.
- 참조 추가: 도구 메뉴에서 ‘참조’를 클릭한 후, 목록에서 ‘Selenium Type Library’를 찾아 체크합니다. 확인 버튼을 클릭하여 설정을 저장합니다.
이제 VBA에서 Selenium을 사용할 준비가 되었습니다. 아래 예제 코드를 통해 브라우저를 실행하고, 네이버 웹사이트에 접속해보겠습니다.
vba
Sub OpenNaver()
Dim driver As New Selenium.ChromeDriver
driver.Start "chrome"
driver.Get "https://www.naver.com"
driver.Quit
End Sub
위 코드를 실행하면 Chrome 브라우저가 열리면서 네이버 홈페이지가 자동으로 로드됩니다. 이처럼 Selenium을 활용하여 간단한 웹 자동화를 구현할 수 있습니다.
단계 | 설명 |
---|---|
1 | VBA 편집기 열기 |
2 | Selenium Type Library 참조 추가 |
3 | 브라우저 실행 코드 작성 |
Selenium으로 웹 자동화 수행하기
이제 Selenium을 사용하여 웹 자동화를 좀 더 심화된 방식으로 진행해 보겠습니다. 다양한 웹 페이지와 상호작용을 통해 정보를 수집하는 방법에 대해 알아보겠습니다.
텍스트 입력 및 폼 제출
Selenium은 웹 페이지의 다양한 요소에 접근하고 상호작용할 수 있는 기능을 제공합니다. 예를 들어, 네이버 검색창에 특정 키워드를 입력하고 검색 버튼을 클릭하는 작업을 수행할 수 있습니다.
“`vba
Sub SearchNaver()
Dim driver As New Selenium.ChromeDriver
driver.Start “chrome”
driver.Get “https://www.naver.com”
' 검색창에 텍스트 입력
driver.FindElementByName("query").SendKeys "VBA Selenium"
' 검색 버튼 클릭
driver.FindElementByXPath("//input[@type='submit']").Click
' 결과 페이지에서 대기
driver.Wait 5000 ' 5초 대기
driver.Quit
End Sub
“`
위 코드를 실행하면, 네이버에서 “VBA Selenium”을 검색하고 결과 페이지로 이동합니다. 이처럼 Selenium을 활용하여 웹 페이지의 특정 요소에 텍스트를 입력하고, 버튼을 클릭하는 작업을 손쉽게 수행할 수 있습니다.
단계 | 설명 |
---|---|
1 | 검색창 요소 찾기 |
2 | 텍스트 입력 |
3 | 검색 버튼 클릭 |
데이터 추출하기
웹 자동화를 통해 수집한 정보를 활용하기 위해서는 웹 페이지에서 특정 데이터를 추출하는 방법을 알아야 합니다. 예를 들어, 네이버에서 검색한 결과의 제목을 추출해 보겠습니다.
“`vba
Sub ExtractNaverTitles()
Dim driver As New Selenium.ChromeDriver
driver.Start “chrome”
driver.Get “https://www.naver.com”
' 검색창에 텍스트 입력
driver.FindElementByName("query").SendKeys "VBA Selenium"
driver.FindElementByXPath("//input[@type='submit']").Click
' 결과 페이지에서 대기
driver.Wait 5000 ' 5초 대기
' 검색 결과 제목 추출
Dim titles As Object
Set titles = driver.FindElementsByXPath("//a[@class='news_tit']")
Dim title As Variant
For Each title In titles
Debug.Print title.Text ' 제목 출력
Next title
driver.Quit
End Sub
“`
위 코드는 네이버에서 검색한 결과 중 뉴스 제목을 추출하여 출력하는 예입니다. Selenium을 통해 다양한 웹 페이지의 데이터를 손쉽게 추출할 수 있습니다.
단계 | 설명 |
---|---|
1 | 검색 결과 페이지로 이동 |
2 | 제목 요소 찾기 |
3 | 제목 출력 |
결론
VBA와 Selenium을 활용한 웹 자동화는 데이터 수집 및 분석의 효율성을 높여줍니다. 이 글에서는 SeleniumBasic 설치, ChromeDriver 설치, VBA 환경 설정, 웹 자동화 및 데이터 추출 방법에 대해 알아보았습니다.
이러한 기술을 활용하면 보다 효율적이고 자동화된 데이터 수집이 가능해집니다. 앞으로는 더욱 다양한 웹 사이트와 상호작용하고, 필요한 정보를 자동으로 수집하는 방법에 대해 계속해서 탐구해 나가기를 바랍니다.
VBA와 Selenium을 통해 웹 자동화의 세계에 한 걸음 더 다가가시기 바랍니다.