셀레니움으로 크롤링 빠르게 하는 예제를 만들어 오세요.

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()

프로그램 작동 방식 설명

이 프로그램은 셀레니움을 사용하여 웹사이트에서 데이터를 빠르게 크롤링하는 예제입니다.

  1. 라이브러리 임포트:
    • selenium과 관련된 모듈을 임포트하여 웹 드라이버를 제어합니다.
    • pandas는 수집한 데이터를 정리하고 저장하는 데 사용됩니다.
  2. 크롬 드라이버 설정:
    • 크롬 브라우저를 창 없이(headless) 실행하도록 옵션을 설정합니다.
    • 필요한 추가 옵션을 설정하여 안정적으로 실행되도록 합니다.
    • 크롬 드라이버의 경로를 지정하여 웹 드라이버를 초기화합니다.
  3. 웹 사이트 접속:
    • driver.get() 메서드를 사용하여 크롤링할 웹사이트에 접속합니다.
    • 실제 크롤링하려는 URL로 변경해야 합니다.
  4. 데이터 수집:
    • find_elements 메서드를 사용하여 특정 클래스 이름을 가진 모든 요소를 찾아냅니다.
    • 각 요소에서 제목(h2 태그)과 링크(a 태그)를 추출하여 리스트에 저장합니다.
  5. 데이터 저장:
    • 수집한 데이터를 pandas 데이터프레임으로 변환한 후, CSV 파일로 저장합니다.
  6. 종료:
    • 모든 작업이 끝난 후 driver.quit()을 호출하여 웹 드라이버를 종료하고 자원을 해제합니다.

이 과정을 통해 웹사이트에서 필요한 데이터를 효율적으로 수집하고 저장할 수 있습니다. 프로그램은 헤드리스 모드로 실행되어 속도가 빠르며, 암묵적 대기 시간을 설정하여 요소가 로드될 때까지 적절히 기다립니다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다