Selenium에서 요소에 스크롤하는 방법?

Selenium에서 특정 요소로 스크롤하려면execute_script메서드를 사용하면 됩니다. 이 메서드는 브라우저 세션 내에서 JavaScript를 실행할 수 있게 해줍니다. 이 접근 방식은 다양한 Selenium 선택자로 식별된 모든 WebElement로 스크롤할 수 있는 유연성을 제공합니다.

다음은 Selenium을 사용하여 특정 요소로 스크롤하는 단계별 가이드로, 웹페이지로 이동하여 지정된 요소로 스크롤하는 향상된 코드 예제가 포함되어 있습니다.

Selenium에서 요소로 스크롤하는 방법

요소로 스크롤하려면 다음을 수행해야 합니다:

  1. WebDriver 인스턴스를 초기화합니다.
  2. 대상 웹 페이지로 이동합니다.
  3. 적합한 선택기를 사용하여 스크롤할 WebElement를 찾습니다.
  4. execute_script메서드를 사용하여 해당 요소로 스크롤하는 JavaScript 명령을 실행합니다.

다음은 웹페이지로 이동한 후 지정된 요소(예: 특정 ID를 가진 요소)로 스크롤하는 예제 코드입니다.

예제 코드

      from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

# Chrome 옵션 설정
chrome_options = Options()
chrome_options.add_argument("--start-maximized")

# WebDriver 초기화
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)

# 원하는 웹페이지로 이동
driver.get("http://www.scrapingbee.com")

# 특정 요소로 스크롤하는 자바스크립트 코드
js_code = "arguments[0].scrollIntoView({behavior: 'smooth', block: 'center'});"

# 스크롤할 WebElement 찾기
element = driver.find_element(By.ID, 'footer')

# 요소에 스크롤하기 위한 자바스크립트 코드 실행
driver.execute_script(js_code, element)

# 선택적으로 스크롤 관찰을 위한 지연 시간 추가
import time
time.sleep(2)

# WebDriver 종료
driver.quit()

    

설명

설정

  1. Chrome 옵션 설정: Chrome이 최대화 상태로 시작되도록 구성하여 스크립트 실행 중 가시성을 향상시킵니다.
  2. 웹드라이버 초기화:webdriver_manager를사용하여 ChromeDriver 바이너리를 자동 관리함으로써 설정을 간소화합니다.
  3. 웹페이지로 이동: WebDriver를 지정된 URL로 안내합니다.
  4. JavaScript 코드:scrollIntoView메서드를 개선하여 부드러운 스크롤과 뷰포트 중앙 정렬 옵션을 제공합니다.
  5. WebElement 위치 지정:find_element와By.ID를사용하여 스크롤할 요소를 지정합니다.
  6. JavaScript 실행: 대상 WebElement를 인수로 전달하여 JavaScript 코드를 실행합니다.
  7. 지연 (선택 사항): 스크롤 동작을 관찰하기 위한 지연을 추가합니다.
  8. WebDriver 종료: 브라우저 세션을 종료합니다.

Selenium에서 효율적인 스크롤링을 위한 팁

  • 부드러운 스크롤:{behavior: 'smooth'}을사용하면 더 부드러운 스크롤 경험을 보장합니다.
  • 요소 위치 지정:{block: 'center'}을조정하여 뷰포트에서 요소가 표시될 위치를 기준으로시작또는끝을지정할 수 있습니다.
  • 요소 식별: 다양한 선택기(By.ID,By.CLASS_NAME,By.CSS_SELECTOR 등)를 사용하여 요소를 정확하게 타깃팅하세요.

이 가이드를 따르면 Selenium을 사용하여 웹페이지의 모든 요소에 효율적으로 스크롤할 수 있어 웹 자동화 스크립트를 더욱 견고하고 사용자 친화적으로 만들 수 있습니다. Selenium과 Puppeteer 중 어떤 것을 사용해야 할지 고민되시나요? 이 비교 글을 확인해 보세요.

시작할 준비가 되셨나요?