python# 셀레니움 라이브러리와 필요한 모듈을 임포트합니다.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
import time
import pandas as pd
# 크롬 드라이버 옵션을 설정합니다.
options = webdriver.ChromeOptions()
options.add_argument('--headless') # 브라우저를 창 없이 실행
options.add_argument('--no-sandbox') # 샌드박스 모드 비활성화
options.add_argument('--disable-dev-shm-usage') # /dev/shm 사용 안 함
# 크롬 드라이버의 경로를 지정합니다.
service = Service('path/to/chromedriver') # 크롬 드라이버의 실제 경로로 변경하세요.
# 웹 드라이버를 초기화합니다.
driver = webdriver.Chrome(service=service, options=options)
# 타겟 웹사이트로 이동합니다.
driver.get("https://example.com") # 크롤링하려는 실제 URL로 변경하세요.
# 암묵적 대기 시간을 설정하여 요소 로드를 기다립니다.
driver.implicitly_wait(10) # 최대 10초까지 기다립니다.
# HTML 요소를 찾아서 데이터를 수집합니다.
items = driver.find_elements(By.CLASS_NAME, "item-class") # 실제 클래스 이름으로 변경하세요.
# 수집한 데이터를 저장할 리스트를 초기화합니다.
scraped_data = []
# 찾은 각 아이템에서 필요한 정보를 추출합니다.
for item in items:
title = item.find_element(By.TAG_NAME, "h2").text # 제목 추출
link = item.find_element(By.TAG_NAME, "a").get_attribute("href") # 링크 추출
scraped_data.append({'title': title, 'link': link})
# 크롤링한 데이터를 데이터프레임으로 변환합니다.
df = pd.DataFrame(scraped_data)
# 데이터를 CSV 파일로 저장합니다.
df.to_csv("output.csv", index=False) # 'output.csv' 파일로 저장
# 웹 드라이버를 종료하여 자원을 해제합니다.
driver.quit()
프로그램 작동 방식 설명
이 프로그램은 셀레니움을 사용하여 웹사이트에서 데이터를 빠르게 크롤링하는 예제입니다.
- 라이브러리 임포트:
selenium
과 관련된 모듈을 임포트하여 웹 드라이버를 제어합니다.pandas
는 수집한 데이터를 정리하고 저장하는 데 사용됩니다.
- 크롬 드라이버 설정:
- 크롬 브라우저를 창 없이(headless) 실행하도록 옵션을 설정합니다.
- 필요한 추가 옵션을 설정하여 안정적으로 실행되도록 합니다.
- 크롬 드라이버의 경로를 지정하여 웹 드라이버를 초기화합니다.
- 웹 사이트 접속:
driver.get()
메서드를 사용하여 크롤링할 웹사이트에 접속합니다.- 실제 크롤링하려는 URL로 변경해야 합니다.
- 데이터 수집:
find_elements
메서드를 사용하여 특정 클래스 이름을 가진 모든 요소를 찾아냅니다.- 각 요소에서 제목(
h2
태그)과 링크(a
태그)를 추출하여 리스트에 저장합니다.
- 데이터 저장:
- 수집한 데이터를
pandas
데이터프레임으로 변환한 후, CSV 파일로 저장합니다.
- 수집한 데이터를
- 종료:
- 모든 작업이 끝난 후
driver.quit()
을 호출하여 웹 드라이버를 종료하고 자원을 해제합니다.
- 모든 작업이 끝난 후
이 과정을 통해 웹사이트에서 필요한 데이터를 효율적으로 수집하고 저장할 수 있습니다. 프로그램은 헤드리스 모드로 실행되어 속도가 빠르며, 암묵적 대기 시간을 설정하여 요소가 로드될 때까지 적절히 기다립니다.
답글 남기기