동적 웹 스크래핑

O(logn)·2024년 11월 25일

파이썬 웹크롤링

목록 보기
8/12
post-thumbnail

사진: UnsplashRichard Stachmann

정적 웹사이트 vs 동적 웹사이트

  • 동적 웹사이트(Dynamic Website): 새로고침할 때마다 웹사이트 콘텐츠가 바뀜. (= 응답 후 HTML이 렌더링될 때까지의 지연시간 존재!)
  • 정적 웹사이트(Static Website): 한번의 로드에 완전한 콘텐츠가 뜸

동적 웹사이트의 동작 방식

  • Java Script가 비동기 처리를 통해 필요한 데이터를 응답 이후에 채운다.
  • 동기 처리: 요청에 따른 응답을 렌더링 이후에 기다림
  • 비동기 처리: 요청에 따른 응답을 기다리지 않고 렌더링 도중 데이터 처리가 이루어진다. -> 상황에 따라 데이터가 불완전한 경우도 발생
  • 비동기 처리의 데이터 불완전 해소 방법: 임의로 데이터 처리 시간을 늘려 데이터 처리가 끝난 후 정보를 가져온다.

파이썬 Selenium을 활용해 데이터 처리 시간 늘리기

from selenium import webdriver

driver = webdriver.Chrome()
driver.implicity_wait(10)
driver.get("http://www.example.com")

webdriver.Chrome(): Chrome 브라우저를 제어
driver.implicitly_wait(10): Selenium이 요소를 찾을 때까지 최대 10초동안 기다리고, 만약 요소를 찾으면 바로 데이터를 로드함
driver.get("http://www.example.com"): 해당 url의 페이지 로드를 요청

from selenium import webdriver

elem = find_element(By.TAG_NAME, "hello-input")
elem.send_key("Hello")

elem = find_element(By.TAG_NAME, "hello-input"): 특정 HTML 태그 이름이 "hello-input"인 요소를 찾아 elem변수에 저장
elem.send_key("Hello"): elem 변수에 저장된 입력 가능한 웹 요소(예: <input> 태그)에 "Hello" 문자열을 입력

profile
聞一知十

0개의 댓글