본문 바로가기
Python

[Python, django]WebDriverException 오류 해결법

by 전봇대파괴자 2020. 9. 18.

 

최근에는 크롤링 관련 글만 올리고 있네요 의도한 건 아니었는데;;

 

이번에는 django와도 연관이 있는 오류와 그 해결 방법에 대한 포스팅입니다. 

 

django로 웹 서비스를 만드는데, 크롤링이 필요한 경우가 있습니다. 검색어를 입력하고, 그 검색어에 따라 특정 사이트를 크롤링하여 그 결과를 화면에 출력한다거나 할 때가 대표적이죠. 제가 지금 만드는 작은 프로젝트도 그런 느낌입니다. 그 프로젝트에 대해서는 다른 포스팅에서 이야기하기로 하고, 우선 오류 메시지를 보겠습니다.

 

 

이 오류는 로컬에서 코드를 통한 크롤링이 시도되었을 때 발생했습니다. 

오류 메시지를 흩으니 PATH라는 말이 보입니다. 경로와 관련이 있다는 말이지요. 그럼 무엇의 경로이냐? 메시지에도 써 있듯 'chromedriver.exe'라는 파일의 경로입니다. 여기서 웹 크롤링을 하기 위해 필수적인 라이브러리 두 개에 대해 짧게 설명하고 가겠습니다. 

 

파이썬으로 웹 크롤링을 하다 보면 반드시 두 개의 라이브러리를 만나게 됩니다.

 

BeautifulSoup, 그리고 selenium

 

자세한 설명은 다른 포스팅에서 하고, 이 두 개는 서로 다른 용도로 쓰인다는 것만 말해두겠습니다.

어떤 용도냐고요? 간단히 말해 selenium은 크롤링하고 싶은 브라우저를 복사하고, BeautifulSoup은 그 복사된 브라우저에서 우리가 크롤링하고 싶은 텍스트를 가져오는 역할을 합니다. 그럼 왜 굳이 복사를 하느냐? 웹페이지란 게 모든 정보가 다 한번에 뜨지는 않거든요. 그리고 현재 켜져 있는 웹페이지와 다른 웹페이지의 정보를 한번에 크롤링하는 것도 불가능합니다. 적어도 BeautifulSoup만 쓰려고 한다면 그렇습니다. 그래서 브라우저의 모든 것을 깔끔히 복사해 가상 브라우저를 띄워주는 selenium이 필요합니다. 

 

하지만 이 selenium으로 가상 브라우저 창을 열기 위해서는 내가 지금 사용하고 있는 웹 브라우저(FireFox, Opera..... 저의 경우는 Chrome)의 드라이버 파일이 필요합니다. 지난 포스팅에서도 언급했지만, 현재 로컬 환경에서 사용하는 웹 브라우저 버전과도 맞아야 오류가 안 납니다. 저는 지난번에 버전에 맞는 드라이버를 잘 설치해 오류를 고쳤었죠. 그러면 이번엔 문제가 뭘까요. 

 

제 짧은 경험상 파일 경로로 인해 오류가 생기는 경우는 둘 중 하나입니다. 

 

1. 지정한 경로에 해당 파일이 없다.

2. 지정한 경로가 상대경로다. 

 

chromedriver.exe 파일의 위치는 이미 확인했기 때문에 1은 원인이 아니었습니다. 그렇다면? 

 

원래 적었던 상대경로를
절대경로로 수정

 

빠르게 상대경로를 절대경로로 수정해봅니다. 

 

이럴 경우 해결되는 오류가 꽤 있습니다. 상대 경로는 말 그대로 파일이 어느 위치에 있느냐에 따라 상대적으로 변하는 경로입니다. 현재 실행되는 파일과 같은 위치에 chromedriver.exe가 존재한다면, 그냥 저렇게만 경로에 써도 됩니다. 하지만 DRIVER라는 하위 폴더에 파일이 존재한다고 하면 'DRIVER/chromedriver.exe'가 되겠지요. 

 

절대 경로는 파일이 어느 위치에 있느냐와 상관없이 가장 큰 저장소인 C:/부터 파일이 존재하는 폴더~파일명까지를 정확하게 지정합니다. 보통 C:/로 시작한다면 절대경로라고 보시면 됩니다. 

 

과연 이번에도 고쳐질까, 했는데 깨끗하게 고쳐졌습니다. 

이 오류는 상대경로를 절대경로로 바꾸면 해결됩니다. 제 컴퓨터에서 그랬지만, 절대경로를 다르게 입력해야 하는 경우도 있을 수 있으니 이 글도 참고하시기 바랍니다.