[Selenium] 셀레니움 다뤄보기 - 2 (wait, XPATH)

2024. 10. 4. 16:56·크롤링, 스크래핑, 시각화/Selenium

이전 포스팅에서는 셀레니움의 설치 방법을 알아보았다면, 이번에는 셀레니움을 통해 웹 스크래핑을 진행하여 직접 다뤄보는 방법에 대해서 설명하겠습니다!

 

Wait ?

wait은 말 그대로 대기입니다!

셀레니움은 동적 웹 사이트를 스크래핑, 크롤링 하기 위한 용도로 많이 사용하기에 동적 웹 사이트의 주소를 불러오려면 컴퓨터, 인터넷 성능에 따라 불러오는 시간이 달라질 수 있습니다.

 

그렇기에 가져오려는 데이터가 로드될 때까지의 시간이 존재해야 데이터를 안정적으로 끌고올 수 있습니다!

 

셀레니움은 이를 해결하기 위해 2가지의 대기 상태를 지원합니다.

  1. Implicit Wait(암묵적 대기) : 시간을 정해놓고 웹 페이지 전체 로딩이 완료될 때까지 지정 시간 동안 기다린다!
  2. Explicit Wait(명시적 대기) : 해당 태그를 가져올 수 있을 때까지. 즉, 조건을 만족할 때까지 기다린다!

XPATH ?

XPATH는 동일한 구조를 갖는 요소를 쉽게 접근하기 위해 파일 경로와 같은 경로 위에 지정한 구문을 사용하여 항목을 배치하고 처리하는 방법을 기술하는 언어입니다!

 

어떻게 쓸까?

   1. Implicit Wait(암묵적 대기)

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait

with webdriver.Chrome(service=Service(ChromeDriverManager().install())) as driver:
    driver.get('url 명')
    
    # 웹 페이지 전체를 로드하는데 10초까지 기다릴게!
    driver.implicitly_wait(10)
    
    print(driver.find_element(By.XPATH, 'XPATH 경로').text)

 

   2. Explicit Wait(명시적 대기)

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

with webdriver.Chrome(service=Service(ChromeDriverManager().install())) as driver:
    driver.get('url 명')
    
    # 해당 XPATH가 로드될 때까지 60초만큼 기다릴게! 그 전에 오면 종료!
    element = WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.XPATH, 'XPATH 경로')))
                                            
    print(element.text)

 

이처럼 동적 웹을 스크래핑하기 위해 대기 시간을 지정하고 XPATH 경로에 해당하는 요소의 값을 가져올 수 있습니다!

 

TMI

현재 제 환경은 m1 pro 칩셋 노트북을 사용하고 있는데, 셀레니움의 실행 시간이 무지막지하게 느립니다...

chrome, python 등 재설치를 진행해보아도 똑같아서, 해결 방법을 알게된다면 추가 포스팅 해보도록 하겠습니다!

 

혹시라도 해결 방법을 아시는 분이 계시다면 댓글 부탁드려요!!

저작자표시 (새창열림)

'크롤링, 스크래핑, 시각화 > Selenium' 카테고리의 다른 글

[Selenium] 셀레니움 다뤄보기 - 3 (마우스, 키보드 이벤트)  (2) 2024.10.04
[Selenium] 셀레니움 다뤄보기 - 1 (By, 요초 추출)  (0) 2024.10.04
[Selenium] 셀레니움 설치 방법  (1) 2024.10.04
'크롤링, 스크래핑, 시각화/Selenium' 카테고리의 다른 글
  • [Selenium] 셀레니움 다뤄보기 - 3 (마우스, 키보드 이벤트)
  • [Selenium] 셀레니움 다뤄보기 - 1 (By, 요초 추출)
  • [Selenium] 셀레니움 설치 방법
김줘
김줘
김줘와 같이 데이터, 컴퓨터, IT 공부
  • 김줘
    초보개발자 김줘의 코딩일기
    김줘
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 데이터 엔지니어링 데브코스
      • 데이터
        • Airflow
        • Spark
        • Kafka
        • dbt
      • TroubleShooting
      • Docker
      • AWS
      • 크롤링, 스크래핑, 시각화
        • Selenium
        • 시각화
      • 코딩테스트
        • 프로그래머스
        • 입출력과 사칙연산
        • 정렬
      • Django
      • 자바 공부
      • 끄적끄적
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    TiL
    자바
    cloud
    aws
    데이터 엔지니어링 데브코스
    데이터 엔지니어
    파이썬
    데이터 엔지니어링 데브코스 4기
    Airflow
    Azure
    오블완
    데브코스
    부트캠프
    초보개발자
    Java
    티스토리챌린지
    프로그래밍
    Python
    프로그래머스
    에어플로우
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
김줘
[Selenium] 셀레니움 다뤄보기 - 2 (wait, XPATH)
상단으로

티스토리툴바