날씨 데이터를 수집할 일이 생겼다.
산업에서 사용되는 날씨 데이터의 종류? 규격은 생각보다 다양하다. 그 중 epw라는 규격이 있음을 알게 되었다.
상당히 까다롭지만 이러한 규격으로 98개국 3000개 도시에 대한 날씨 데이터를 무료로 제공하는 곳이 있다.
하지만 이곳은 동적 페이지로 구성되어 있다.
그렇게 기억 저 편에 고히? 잠들어있던 셀레니움을 다시 꺼내 볼 기회를 갖게 되었다.
이 과정에서 이전에는 몰랐던( 무작정 따라했거나, 알고 있던 방식으로만 했거나) XPath(XML Path Language)를 사용하게 되었다. dom script에서 id, classs 또는 tag기반으로 selecting하지 않고 마치 상대/절대 좌표(x,y축)위치를 기반으로 selecting하는 정말이지 Path라는 키워드가 딱- 어울리는 느낌이었다.
덕분에 동적 페이지에서; 매번 갯수와 순서가 바뀌는 목록에서; 특정 항목만(목록의 이름이 epw인 a태그 element) 추출하는 과정에서도 반복문을 돌릴 필요가 없이 원하는 요소를 지정할 수 있다.
그리고 셀레니움이 이전과 달리 매우 매우 많이 업데이트 되었다. 평소에 사용하는 크롬 브라우저가 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)
참고 자료