[작성자:] WS

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

    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()을 호출하여 웹 드라이버를 종료하고 자원을 해제합니다.

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