selenium 기본 사용 방법
# 제목 추출하기
>>> driver.find_elements_by_css_selector('.store_product_info_box')
# 하나의 DOM 요소는 WebElement 객체에 대응합니다.
>>> div = driver.find_elements_by_css_selector('.store_product_info_box')[0]
# 속성을 추출할 때는 get_attribute() 메서드를 사용합니다.
>>> div.get_attribute('class')
# 요소 내부에서 요소를 추가로 탐색할 수도 있습니다.
>>> div.find_elements_by_css_selector('h3')
# 내부의 글자를 추출할 때는 text 속성을 사용합니다.
>>> h3.text
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# ChromeDriver 경로 설정 (본인의 환경에 맞게 수정)
CHROME_DRIVER_PATH = "~~~~chromedriver"
# Chrome 옵션 설정
chrome_options = Options()
chrome_options.add_argument("--headless") # 브라우저 창을 띄우지 않고 실행
chrome_options.add_argument("--disable-gpu") # GPU 사용 안 함
chrome_options.add_argument("--no-sandbox") # 리눅스 환경에서 권한 문제 방지
chrome_options.add_argument("--disable-extensions") # 확장 프로그램 비활성화
chrome_options.add_argument("--disable-images") # 이미지 로드 비활성화 (속도 향상)
chrome_options.add_argument("--blink-settings=imagesEnabled=false") # 이미지 로드 비활성화
# 페이지 로드 전략 설정 (eager: DOM이 인터랙티브 상태일 때 진행)
chrome_options.page_load_strategy = "eager"
# WebDriver 초기화
service = Service(CHROME_DRIVER_PATH)
driver = webdriver.Chrome(service=service, options=chrome_options)
try:
# 웹 페이지 열기
url = "https://google.co.kr"
driver.get(url)
print(f"페이지 제목: {driver.title}")
# 특정 요소 찾기 (Explicit Wait 사용)
wait = WebDriverWait(driver, 10) # 최대 10초 대기
search_box = wait.until(EC.presence_of_element_located((By.NAME, "q")))
# 검색어 입력 및 실행
search_box.send_keys("Selenium Python")
search_box.send_keys(Keys.RETURN)
# 검색 결과 대기 및 출력 (Explicit Wait 사용)
results = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "h3")))
for idx, result in enumerate(results[:5]): # 상위 5개 결과만 출력
print(f"{idx + 1}. {result.text}")
finally:
# WebDriver 종료
driver.quit()
'[업무 지식] > Crawling' 카테고리의 다른 글
[geocode] 지오코딩으로 위치 정보 추출하기 (0) | 2025.01.02 |
---|---|
[selenium] 네이버페이 주문 이력 추출하기 (0) | 2025.01.02 |
[MySQL] 연결 및 테이블 조작 (0) | 2025.01.01 |
[youtube] 유튜브에서 동영상 정보 수집하기 (0) | 2025.01.01 |
[API 데이터 수집, 활용] 트위터(X)에서 데이터 수집하기 (0) | 2025.01.01 |