본문 바로가기
Python

[Error] 파이썬 셀레니움 크롬 chrome not reachable 에러 해결

by daewooki 2021. 12. 17.
반응형

셀레니움을 이용해서 크롬 드라이버로 데이터를 크롤하던 중 중간중간 가끔 chrome not reachable 에러가 발생해서 크롤링이 중단되는 경우가 발생했다. 

 

- 에러 메시지 - 

selenium.common.exceptions.WebDriverException: Message: chrome not reachable

 

크롬 드라이버 옵션이 많은데 구글링을 하며 이것저것 해본 결과 약 3번 테스트 끝에 며칠이 지나도 에러가 발생하지 않는 것을 찾았다.

 

아래와 같이 크롬 드라이버의 옵션을 세팅해주면 된다.

1
2
3
4
5
6
7
8
9
10
11
from selenium import webdriver
 
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument("--incognito")
    chrome_options.add_argument("--headless")
    chrome_options.add_argument("--no-sandbox")
    chrome_options.add_argument("--disable-setuid-sandbox")
    chrome_options.add_argument('--disable-dev-shm-usage')
    chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
 
    browser = webdriver.Chrome('chromedriver', chrome_options=chrome_options)
cs

옵션 설명

--incognito: 시크릿모드

--headless: 리눅스와 같이 GUI 디스플레이가 없을 때 사용

--no-sandbox: 대부분의 리소스에 대한 액세스를 방지한다고 나와있음 (자세히는 모르겠지만 필수 옵션인 듯..)

--disable-setuid-sandbox: 크롬 드라이버에 setuid를 하지 않음으로써 크롬의 충돌을 막아줌

--disable-dev-shm-usage: dev/shm 을 공유하지 않는 다는 것. 메모리가 부족해서 에러가 발생하는 것을 막아준다.

 

이 옵션으로 7일 이상 5분에 한번씩 크롤하는 크롤러가 끊기지 않고 정상 작동하는 것을 확인했다. 

 

* 추가사항

크롬 드라이버를 띄운 후에는 browser.close()가 아닌 browser.quit()를 해주어야 메모리도 해제되고 확실히 종료된다.

반응형

댓글