웹 브라우저 자동화 - Selenium : 3-1. 동적 웹 페이지와의 만남

임동윤·2022년 9월 28일
0

웹 스크래핑 기초

목록 보기
11/20
post-thumbnail

정적 웹 사이트와 동적 웹사이트

웹사이트의 종류

  • 웹 페이지는 어떻게 생성되느냐에 따라 크게 2가지로 구분
    • HTML 내용이 고정된 정적(static) 웹 사이트
    • HTML 내용이 변하는 동적(dynamic) 웹사이트

각각의 특징

  • 정적 웹 사이트는 HTML 문서가 완전하게 응답된다.
  • 동적 웹 사이트는 응답 후 HTML이 렌더링이 될 때가지의 지연시간이 존재!

동적 웹사이트의 동작방식

동작방식

  • 웹 브라우저에선 JavaScript라는 프로그래밍 언어가 동작한다.
  • 비동기 처리를 통해서 필요한 데이터를 채운다.

비동기 처리

  • 동기 처리 : 요청에 따른 응답을 기다린다.
  • 비동기 처리 : 요청에 다른 응답을 기다리지 않는다.
  • 동기 처리된 경우 HTML 로딩에 문제가 없다.
  • 비동기 처리된 경우, 상황에 따라서 데이터가 완전하지 않은 경우가 발생 한다!

지금까지의 스크래퍼의 문제점

requests로 요청 시 발생하는 문제점

  • 동적 웹사이트에 적용이 어려움
    • 비동기 처리된 경우 불완전한 응답을 받을 수 있다.
  • UI 상호작용의 어려움
    • 키보드 입력, 마우스 클릭 등을 requests로는 진행하기 어렵다.

해결방안

  • 동적 웹사이트에 대한 방안

    • 임의로 시간을 지연한 후, 데이터 처리가 끝난 후 정보를 가져온다.
  • UI 상호 작용에 대한 방안

    • UI Action을 프로그래밍을 통해 명령을 내린다.

결론

웹 브라우저와 파이썬의 만남

  • 웹 브라우저를 파이썬으로 조작 하자
  • 웹 브라우저를 자동화하는 라이브러리 Selenium 을 이용

예시

  • 응답 후 시간을 지연시킬 수 있다.
from selenium import webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.get("http://www.example.com")
  • UI와의 상호작용이 가능하다.
from selenium import webdriver

elem = driver.find_element_by_tag_name("helo-input")
elem.send_keys("Hello!")

요약

웹브라우저와 파이썬을 함께 사용한다는 아이디어 도출!

  • 동적 웹사이트는 응답 후 바로 정보를 추출사기 어렵다.
  • 또한, 아양한 키보드 입력과 마우스 클릭 등의 상호작용이 존재한다.
  • 이런 상황을 해결하기 위해, 웹 브라우저를 파이썬으로 조작하는 전략을 취한다.

profile
AI Tensorflow Python

0개의 댓글