날씨 데이터를 수집할 일이 생겼다.

산업에서 사용되는 날씨 데이터의 종류? 규격은 생각보다 다양하다. 그 중 epw라는 규격이 있음을 알게 되었다.

상당히 까다롭지만 이러한 규격으로 98개국 3000개 도시에 대한 날씨 데이터를 무료로 제공하는 곳이 있다.

하지만 이곳은 동적 페이지로 구성되어 있다.

그렇게 기억 저 편에 고히? 잠들어있던 셀레니움을 다시 꺼내 볼 기회를 갖게 되었다.

이 과정에서 이전에는 몰랐던( 무작정 따라했거나, 알고 있던 방식으로만 했거나) XPath(XML Path Language)를 사용하게 되었다. dom script에서 id, classs 또는 tag기반으로 selecting하지 않고 마치 상대/절대 좌표(x,y축)위치를 기반으로 selecting하는 정말이지 Path라는 키워드가 딱- 어울리는 느낌이었다.

덕분에 동적 페이지에서; 매번 갯수와 순서가 바뀌는 목록에서; 특정 항목만(목록의 이름이 epw인 a태그 element) 추출하는 과정에서도 반복문을 돌릴 필요가 없이 원하는 요소를 지정할 수 있다.

스크린샷 2023-08-02 오후 11.29.31.png

WebDriver

그리고 셀레니움이 이전과 달리 매우 매우 많이 업데이트 되었다. 평소에 사용하는 크롬 브라우저가 11.5이상이라면 별도의 프로그램 설치도 필요없다.

의존성(패키지) 관리

pip install selenium

pip install webdriver-manager

기본 세팅(import)

import os
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# Set up driver and load the webpage
chrome_path = "C:/Users/userName/chromedriver.exe"
driver = webdriver.Chrome()
page_url = "스크래핑하려는 타깃 페이지 url"
driver.get(page_url)

참고 자료