본문 바로가기
엑셀 크롤링

엑셀 크롤링5. 엑셀 VBA 셀레니움(Selenium)의 프레임 전환 방법

by 부업하는 전문가 2024. 2. 20.
반응형

1. HTML의 프레임이란? 엑셀 VBA 셀레니움으로 전환이 가능할까?

HTML에서 프레임(Frame)은 웹 페이지를 여러 개의 독립적인 영역으로 분할하여 각 영역에 다른 웹 페이지를 표시하는 데 사용됩니다. 이것은 기존의 단일 페이지 구조를 벗어나 여러 개의 페이지를 하나의 페이지 안에서 표시할 수 있도록 해줍니다.

 

HTML의 프레임은 <frame>, <frameset>, <iframe> 등의 요소로 표현됩니다.

프레임을 사용하면 한 웹 페이지 안에서 여러 개의 독립적인 문서를 표시할 수 있으므로, 네비게이션 메뉴나 사이트의 일부를 고정시키거나 다른 웹 사이트를 삽입하는 등의 다양한 사용 방법이 있습니다. 하지만 프레임을 사용할 때에는 검색 엔진 최적화(SEO)나 웹 접근성 등을 고려하여야 합니다. 최근에는 프레임보다는 CSS를 사용하여 레이아웃을 구성하는 것이 권장되는 경향이 있습니다.

 

셀레니움으로 크롤링을 할 경우 이 프레임 전환이되지않으면 해당 프레임 내의 엘리먼트를 컨트롤할 수 없기때문에 프레임을 전환하는 것이 중요합니다.

2. 프레임 전환이 필요한 사이트 예시

예를 들면 하기와 같이 웹사이트 구조내에서 틀이 2개 이상 존재할 경우(예를들면 좌측의 메뉴화면, 우측은 메뉴를 선택시 나오는 본 화면) 이 틀을 프레임(Frame)이라고 생각하시면 됩니다. 셀레니움으로 해당 해당 틀안의 항목을 자동으로 컨트롤하려면 이 틀로 시점을 전환해야합니다.

 

↓ 하기 네이버 부동산과 같이 화면에서 좌,우측이 나뉘어져있으며 이 나뉘어진 틀을 프레임이라고 이해하시면 쉽습니다.

 

웹사이트에서 우클릭, 검사버튼으로 해당 웹사이트의 구조를 파악한 결과 이하와 같은 frame이 존재하여, 해당 frame 내의 element를 컨트롤 하기 위해서는 프레임 전환이 필요.

엑셀 VBA로는 SwitchtoFrame이라는 셀레니움 명령문이 존재하므로 하기와 같은 방법으로 간단히 전환할 수 있습니다.

3. 셀레니움으로 프레임 전환 방법 및 프레임을 찾는방법

Excel VBA에서 Selenium을 사용하여 프레임을 찾고 전환하는 방법은 아래와 같이 할 수 있습니다. Selenium은 일반적으로 웹 브라우저 자동화를 지원하는 도구로, Chrome 브라우저를 기준으로 설명하겠습니다.

(1). Selenium 설치

먼저 Selenium을 설치해야 합니다. Chrome 브라우저를 사용하는 경우, ChromeDriver가 필요합니다.

(2). VBA에 Selenium 참조 추가

VBA 에디터에서 참조를 추가합니다.

Tools -> References로 이동하여 Selenium Type Library를 선택합니다.

(3) VBA 코드 작성

아래는 Selenium을 사용하여 프레임을 찾고 전환하는 간단한 예제 코드입니다.

 

Sub SwitchToFrame()

Dim driver As New Selenium.ChromeDriver ' 웹 페이지 열기

driver.Get "https://example.com" ' 프레임 찾기 (예: 프레임의 ID가 "frame_id"인 경우)
driver.SwitchToFrame "frame_id" ' 원하는 작업 수행 (예: 프레임 내에서 특정 요소 클릭) driver.FindElementById("element_id").Click ' 프레임에서 벗어나 원래의 상위 프레임 또는 최상위 문서로 돌아가기 driver.SwitchToDefaultContent ' 브라우저 닫기

driver.Quit

End Sub

위 코드에서 가장 중요한 부분은 HTML에서 찾은 Frame id 혹은 name을 SwitchToFram의 뒤에 문자로서 붙여넣어 주는 부분입니다. 혹시 Frame의 이름을 잘 모르겠다면,driver.SwitchToFrame (0)과 같이 순번으로도 찾을수 있으니 참고부탁드립니다.

반응형