안녕하세요. 오늘은 파이썬을 이용한 웹 크롤링에서 셀레니움(Selenium)과 함께 사용할 수 있는 크롬 옵션들에 대해 알아보려고 합니다. 웹 크롤링이란 웹사이트에서 데이터를 자동으로 수집하는 작업으로, 구글에서 상품 정보를 수집하거나 뉴스 기사를 모아보는 등 다양한 용도로 활용됩니다.
셀레니움(Selenium)이란?
셀레니움은 웹 애플리케이션을 자동으로 테스트할 수 있는 도구로, 실제 사용자가 웹 브라우저를 사용하는 것처럼 자동으로 웹 페이지에서 정보를 입력하거나 클릭하는 등의 동작을 수행할 수 있게 해줍니다. 그래서 데이터 수집 작업에 매우 유용합니다.
왜 크롬 옵션이 필요한가?
셀레니움은 다양한 브라우저에서 사용할 수 있지만, 크롬(Chrome) 웹 브라우저를 사용할 때 몇 가지 옵션을 설정하면 크롤링 성능을 높일 수 있습니다. 예를 들어, 브라우저가 자동으로 열리는 것을 방지하거나, 로딩 속도를 개선하는 옵션들입니다.
유용한 크롬 옵션들
- — disable-automation: 브라우저가 자동화 모드임을 나타내는 정보를 제거
- — disable-blink-features=AutomationControlled: 자동화 컨트롤 기능을 비활성화하여 봇 감지 우회
- — excludeSwitches - enable-automation: 자동화 관련 스위치를 비활성화
- — useAutomationExtension=False: 자동화 확장 기능 사용 안 함
- — user-agent: 특정 사용자 에이전트 설정하여 일반 사용자처럼 보이게 함
- — headless: 브라우저를 실제로 화면에 나타내지 않고 백그라운드에서 실행
- — disable-gpu: GPU 가속을 비활성화하여 일부 시스템에서의 호환성 향상
- — no-sandbox: 샌드박스 보안 모델 비활성화 (특정 환경에서 필요할 수 있음)
- — disable-dev-shm-usage: 공유 메모리 사용 제한 (리눅스 환경에서 크래시 방지)
- — start-maximized: 브라우저를 최대화된 상태로 시작
- — disable-infobars: 정보 표시줄 비활성화
- — disable-notifications: 웹사이트 알림 차단
- — disable-popup-blocking: 팝업 차단 해제 (필요시 팝업 허용)
- — ignore-certificate-errors: SSL 인증서 오류 무시
예를 들어, headless 옵션을 사용하면 실제로 브라우저를 보지 않고도 크롤링 작업을 수행할 수 있습니다. 이는 서버 환경에서 크롤링을 자동화할 때 유용합니다.
셀레니움을 활용한 크롤링 예제
이제 위에서 소개한 크롬 옵션을 활용하여 셀레니움을 사용한 간단한 크롤링 예제를 살펴보겠습니다.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
# 크롬 옵션 설정
# 브라우저 자동화 감지 우회
chrome_options.add_argument("--disable-automation") # 브라우저가 자동화 모드임을 나타내는 정보를 제거
chrome_options.add_argument("--disable-blink-features=AutomationControlled") # 자동화 컨트롤 기능을 비활성화하여 봇 감지 우회
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) # 자동화 관련 스위치를 비활성화
chrome_options.add_experimental_option("useAutomationExtension", False) # 자동화 확장 기능 사용 안 함
# 브라우저 환경 설정
chrome_options.add_argument("--headless") # UI 없이 백그라운드에서 실행 (구버전)
# chrome_options.add_argument("--headless=new") # 최신 헤드리스 모드 (Chrome 109+ 버전용)
chrome_options.add_argument("--start-maximized") # 브라우저를 최대화된 상태로 실행
chrome_options.add_argument("--disable-infobars") # 정보 표시줄 비활성화 (예: "Chrome이 자동화된 소프트웨어에 의해 제어되고 있습니다" 메시지)
# 성능 및 안정성 개선
chrome_options.add_argument("--disable-gpu") # GPU 하드웨어 가속 비활성화 (특히 헤드리스 모드에서 문제 방지)
chrome_options.add_argument("--no-sandbox") # 샌드박스 보안 기능 비활성화 (리눅스 환경에서 유용)
chrome_options.add_argument("--disable-dev-shm-usage") # 공유 메모리 사용 제한 (리눅스 환경에서 크래시 방지)
# 보안 및 통지 관련
chrome_options.add_argument("--ignore-certificate-errors") # SSL 인증서 오류 무시
chrome_options.add_argument("--disable-notifications") # 웹사이트 알림 차단
chrome_options.add_argument("--disable-popup-blocking") # 팝업 차단 해제 (필요시 팝업 허용)
# 사용자 에이전트 설정
chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36") # 특정 사용자 에이전트 설정하여 일반 사용자처럼 보이게 함
# 크롬 드라이버 경로 설정
service = Service('path/to/chromedriver') # chromedriver의 경로를 입력하세요
# 크롬 드라이버 실행
driver = webdriver.Chrome(service=service, options=chrome_options)
# 웹 페이지 접속
driver.get('https://example.com')
# 원하는 데이터 크롤링
data = driver.find_element("xpath", "//h1").text
print(data)
# 크롬 드라이버 종료
driver.quit()
위의 코드는 셀레니움을 사용하여 특정 웹 페이지에 접속한 후, 제목(<h1></h1>)을 가져오는 예제입니다. 메모해두어야 할 점은 'path/to/chromedriver' 부분을 자신의 환경에 맞게 수정해야 한다는 것입니다. 실행이 완료되면 '<h1></h1>' 태그의 내용을 출력하게 됩니다.
마무리
이번 글에서는 파이썬 셀레니움을 활용하여 웹 크롤링의 기본과 크롬 옵션에 대해 알아보았습니다. 크롤링 옵션을 적절히 설정하면 크롤링 효율을 크게 개선할 수 있으니, 상황에 맞게 활용해보시길 바랍니다.
'IT > Python' 카테고리의 다른 글
PyInstaller: Python 애플리케이션을 배포하는 최적의 솔루션 (0) | 2025.03.08 |
---|---|
Python에서 if문과 switch문에 대해서 알아보기 (0) | 2025.03.08 |
클로드 AI API를 연결하는 간단한 파이썬 예제 (0) | 2025.03.02 |
Python으로 LangChain으로 GPT와 연결하기 (0) | 2025.03.01 |
이진 분류 문제 실습: 파이토치(PyTorch) 예제 (0) | 2025.03.01 |