programming/Python

[selenium] webdriver.ChromeOptions 활용 및 add_argument 메소드 예시

Jofresh 2023. 4. 21. 09:58
728x90
반응형

안녕하세요. 조신선입니다 :) 

오늘은 selenium 라이브러리 메소드 중 크롬옵션에 대해서 알아보도록 하겠습니다.

 

options = webdriver.ChromeOptions()은 selenium의 Chrome webdriver를 사용할 때, 추가적인 설정을 위해 사용하는 클래스입니다. 이를 사용하기 위해서는 아래처럼 2가지 라이브러리를 임포트해주어야 합니다.

from selenium import webdriver #기본 웹드라이버 임포트
from selenium.webdriver.chrome.options import Options #add_argument 사용하기 위해 임포트 하는 것!


ChromeOptions 클래스는 ChromeDriver에서 사용할 수 있는 많은 옵션을 제공합니다. 이를 사용하면 Chrome 브라우저를 제어하는 데 필요한 브라우저 특정 행동을 구성할 수 있습니다. 예를 들어, Chrome 브라우저의 캐시를 사용하지 않도록 설정하거나, 브라우저 창을 최대화하거나, 확장 프로그램을 사용하도록 설정하는 등의 작업을 수행할 수 있습니다.

add_argument() 메소드는 Chrome 브라우저 실행 시에 추가적으로 설정하고자 하는 옵션들을 설정할 수 있도록 도와주는 메소드입니다. 아래는 add_argument() 메소드를 사용하여 설정할 수 있는 몇 가지 예시입니다.


 헤드리스 모드 설정 (★★★★★ 많이 사용)
헤드리스 모드는 브라우저 창을 띄우지 않고 백그라운드에서 실행하는 모드입니다. 아래와 같이 --headless 옵션을 추가하여 설정할 수 있습니다. 크롬창이 팝업되지 않아서 좋기는 한데, 저는 이거만 사용하면 이상하게 오류가 자주나는 것 같아서 대용량 크롤링 할 땐 사용하지 않고, 소용량 크롤링시에만 사용합니다. 

options.add_argument('--headless')
사용자 에이전트 설정
웹 브라우저가 서버에 요청할 때 전송되는 User-Agent 헤더를 설정할 수 있습니다. 아래와 같이 user-agent 옵션을 추가하여 설정할 수 있습니다.

사용자 에이전트 설정 (★★★★★ 많이 사용)
웹 브라우저가 서버에 요청할 때 전송되는 User-Agent 헤더를 설정할 수 있습니다. 아래와 같이 user-agent 옵션을 추가하여 설정할 수 있습니다. 크롤링할 때 내가 크롤링유저인지 숨겨주는 역할이라고 보시면 됩니다. 해당 메소드를 사용하지 않으면 크롤링하려는 웹사이트 host에게 ip가 차단당하거나 class를 바꿔서 크롤링 도중에 실패하는 경우가 자주 생기니 해당 메소드는 필수로 추가해주는 것이 좋습니다.

options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36')

다운로드 경로 설정
다운로드한 파일이 저장될 경로를 설정할 수 있습니다. 아래와 같이 download.default_directory 옵션을 추가하여 설정할 수 있습니다.

options.add_argument('download.default_directory=/path/to/download/directory')

화면 해상도 설정
화면 해상도를 설정할 수 있습니다. 아래와 같이 window-size 옵션을 추가하여 설정할 수 있습니다.

options.add_argument('window-size=1920x1080')

 

웹 사이트에서 자바스크립트가 실행되지 않도록 설정
자바스크립트 실행이 필요없는 경우에는 아래와 같이 --disable-javascript 옵션을 추가하여 자바스크립트 실행을 비활성화할 수 있습니다.

options.add_argument('--disable-javascript')

웹 사이트에서 브라우저 알림을 허용하지 않도록 설정
브라우저 알림이 필요 없는 경우에는 아래와 같이 --disable-notifications 옵션을 추가하여 브라우저 알림을 비활성화할 수 있습니다.

options.add_argument('--disable-notifications')

웹 사이트에서 이미지를 로드하지 않도록 설정
웹 페이지에서 이미지 로드가 필요 없는 경우에는 아래와 같이 --blink-settings 옵션을 추가하여 이미지 로드를 비활성화할 수 있습니다.

options.add_argument('--blink-settings=imagesEnabled=false')

이렇게 아무런 이미지를 띄우지 않습니다.

나머지는 귀찮아서 한방에 ...ㅋㅋ

options = webdriver.ChromeOptions()  # Chrome 브라우저 설정 옵션 객체 생성

# 다양한 설정 옵션 추가
options.add_argument('--disable-extensions')  # 확장 프로그램 사용 안함
options.add_argument('--start-maximized')  # 창 최대화
options.add_argument('--incognito')  # 시크릿 모드로 실행
options.add_argument('--disable-gpu')  # GPU 가속 사용 안함 (★★★★★ 많이 사용)
options.add_argument('--disable-dev-shm-usage')  # /dev/shm 사용 안함
options.add_argument('--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"')  # User-Agent 설정
options.add_argument('--disable-notifications')  # 알림 사용 안함

오늘은 add_argument 예시 활용법에 대해서 알아보았습니다. 

실제로 저는 아래처럼 add_argument를 세팅해두고 크롤링 작업을 한답니다. 참고 부탁드려요 :)

 

 

 

728x90
반응형