+ 개발

Selenium을 이용한 웹 크롤링

AI.Logger 2024. 8. 15. 15:30
  • 수업 내용 리마인드 및 아카이빙 목적의 업로드

"Image generated using DALL-E by OpenAI"


 

Selenium은 웹 브라우저를 자동으로 제어할 수 있는 강력한 도구로, 특히 동적 웹 페이지에서 데이터를 추출할 때 매우 유용합니다.

 

1. Selenium 시작하기

 

Selenium을 시작하기 위해 먼저 라이브러리를 설치해야 합니다. Python 환경에서 pip install selenium 명령어를 사용하여 설치할 수 있습니다. 설치 후에는 Selenium WebDriver를 사용하여 브라우저를 제어할 수 있습니다.

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.naver.com')
driver.quit()

이 간단한 코드로 브라우저를 열고, 네이버 페이지에 접속한 후 브라우저를 닫을 수 있습니다.

 

2. Selenium WebDriver 활용

 

Selenium WebDriver는 다양한 웹 요소를 제어할 수 있도록 도와줍니다. 웹 페이지의 특정 요소를 선택하고, 해당 요소와 상호작용할 수 있습니다. 예를 들어, 특정 CSS 셀렉터를 사용해 요소를 선택하고, 그 안의 텍스트를 가져올 수 있습니다.

from selenium.webdriver.common.by import By

driver.find_element(By.CSS_SELECTOR, 'css_selector').text

여기서 find_element 메서드는 첫 번째 일치하는 요소를 반환하고, find_elements는 모든 일치하는 요소를 리스트로 반환합니다.

 

3. Wait & Sleep

 

웹 페이지가 로드되기 전에 요소를 찾으려고 하면 오류가 발생할 수 있습니다. 이를 방지하기 위해 Selenium은 암시적 대기(implicitly_wait)와 명시적 대기(time.sleep) 기능을 제공합니다. 이를 통해 웹 페이지가 완전히 로드될 때까지 기다릴 수 있습니다.

driver.implicitly_wait(10)

 

4. 클릭 및 키보드 입력

 

Selenium은 웹 요소를 클릭하거나 텍스트를 입력하는 기능도 제공합니다. 예를 들어, 특정 버튼을 클릭하거나 입력 필드에 텍스트를 입력할 수 있습니다.

element.click()
element.send_keys('입력할 텍스트')

 

5. 스크롤 내리기

 

동적 웹 페이지에서 무한 스크롤을 처리해야 할 때가 많습니다. Selenium은 자바스크립트 코드를 실행하여 페이지를 스크롤할 수 있습니다.

driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')

 

6. HTML 소스 가져오기

 

페이지의 전체 HTML 소스를 가져와 BeautifulSoup과 같은 HTML 파서로 분석할 수 있습니다.

page_source = driver.page_source