반응형
셀레니움을 이용해서 크롬 드라이버로 데이터를 크롤하던 중 중간중간 가끔 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()를 해주어야 메모리도 해제되고 확실히 종료된다.
반응형
'Python' 카테고리의 다른 글
beautifulsoup으로 태그 정보 파싱하기 (0) | 2022.02.08 |
---|---|
[Python]anaconda를 miniconda로 변경하는 방법(패키지 복사) (0) | 2022.01.19 |
[Python] Selenium과 Chrome driver를 활용한 Google Translation 자동화 (0) | 2021.12.08 |
[Python] Selenium과 Chrome driver를 활용한 Papago Translation 자동화 (0) | 2021.12.08 |
[Python] 네이버 카페 게시글 크롤러(feat. 크롬 드라이버 & 셀레니움) (6) | 2021.11.23 |
댓글