3. Selenium
3-1. Selenium 개요
3-1-1. Selenium 이란
💡Selenium은 브라우저를 자동화하는 도구로, 웹 페이지의 JavaScript 렌더링까지 처리할 수 있다. 브라우저 드라이버를 사용하여 실제 브라우저(예: Chrome, Firefox)를 구동하여 웹 페이지를 로드하고, 스크립트를 통해 브라우저 내에서 클릭, 입력 등의 동작을 자동화한다. JavaScript 실행을 통해 생성된 콘텐츠도 로드하여 처리할 수 있다. 따라서 웹 페이지의 인터랙션과 동적 데이터를 크롤링하는 데 유용하다.
3-1-2. Selenium 장단점
- 장점
- JavaScript로 생성된 콘텐츠를 포함하여 모든 웹 요소에 접근 가능하다.
- 버튼 클릭, 입력 상자 채우기 등 브라우저 상호작용이 가능하다.
- 단점
- 속도가 느리고 시스템 자원을 많이 사용한다.
- 설치 및 초기 설정이 필요하다.
3-2. Selenium 주요 함수 및 메서드
- Selenium의 주요 내용은 Documents에서 자세하게 확인할 수 있다.
3-2-1. 브라우저 제어 관련
- webdriver.Chrome(executable_path): Chrome 브라우저 객체를 생성한다.
- driver.get(url): 특정 URL로 이동한다.
- driver.current_url: 현재 브라우저의 URL을 반환한다.
- driver.refresh(): 현재 페이지를 새로고침한다.
- driver.back(): 이전 페이지로 이동한다.
- driver.forward(): 브라우저를 앞으로 이동시킨다.
- driver.maximize_window() / driver.minimize_window(): 브라우저 창을 최대화/최소화한다.
- driver.execute_script("window.scrollTo(x, y)"): 특정 위치로 화면을 스크롤한다.
- driver.switch_to.alert: 현재 브라우저에서 열려 있는 경고(alert) 창으로 전환한다.
- alert.accept()/alert.dismiss(): 경고창의 확인/취소 버튼을 누른다.
- driver.quit(): 모든 탭과 브라우저를 종료한다. (사용 후 자원 해제를 위해 반드시 호출해야 한다.)
- driver.close(): 현재 활성화된 브라우저 탭만 닫는다.
3-2-2. 요소 탐색 관련
- driver.find_element(By.ID, value): 특정 ID로 요소를 찾는다.
- driver.find_elements(By.CLASS_NAME, value): 특정 클래스 이름으로 모든 요소를 리스트로 반환한다.
- driver.find_element(By.TAG_NAME, value): 특정 태그 이름으로 요소를 찾는다.
- driver.find_element(By.LINK_TEXT, value): 링크 텍스트로 요소를 찾는다.
- driver.find_elements(By.CSS_SELECTOR, value): CSS 선택자로 요소들을 찾는다.
3-2-3. 상호작용 및 입력 관련
- element.click(): 특정 요소를 클릭한다.
- element.send_keys(keys): 입력 상자에 텍스트를 입력한다.
- element.clear(): 입력 상자 내용을 지운다.
- element.submit(): 폼을 제출한다.
- element.is_displayed(): 요소가 화면에 표시되는지 확인한다.
3-2-4. JavaScript 및 동적 콘텐츠 제어
- driver.execute_script(script): JavaScript를 실행한다.
- driver.execute_async_script(script): 비동기 JavaScript를 실행한다.
- driver.switch_to.frame(frame_reference): 특정 iframe으로 이동한다.
- driver.switch_to.default_content(): iframe에서 기본 컨텐츠로 돌아온다.
'Web Crawling > Selenium' 카테고리의 다른 글
동적 웹 페이지 스크래핑 - Selenium 활용 (0) | 2025.02.24 |
---|