라즈베리 파이는 ARM 아키텍처를 사용한다. 그런데 크롬 웹 드라이버는 arm에서 작동하도록 컴파일 된 버전을 기본적으로 배포하지 않는다.
Chrome for Testing availability
어째서지?
만약 크롬 드라이버가 아키텍처에 맞지 않게 설치되어있으면 아래와 같은 오류가 뜰 수 있다.
OSError: [Errno 8] Exec format error: ‘크롬 드라이버 경로’
방법1 – chromium-chromedriver 설치
sudo apt install chromium-chromedriver
apt로 chromium-chromedriver를 설치해보자.
설치가 완료되었다면 드라이버 파일은 /usr/bin/chromedriver 경로에 위치한다.
방법2 – ARM용 드라이버를 찾아보자
일렉트론(Electron)의 깃헙 릴리즈 페이지에서는 arm에서 쓸 수 있는 크롬 드라이버를 배포한다.
Releases · electron/electron
:electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS - electron/electron
다만 크롬 드라이버의 직접적인 버전이 적혀있지는 않다. 특별한 이유가 없으면 그냥 최신으로 받자. 어차피 파이에 설치된 크롬도 업데이트 하면 되니까.
64비트 기준 chromedriver-vxx.x.x-linux-arm64라고 적혀있는 파일을 받아 압축을 풀고, 안에 있는 드라이버를 적당한 곳에 두고 경로를 잡아줘서 셀레니움을 실행하면 된다.
참고 – 크롬 드라이버 경로 직접 지정
from selenium import webdriver
from selenium.webdriver.ie.service import Service
service = Service(executable_path="/path/of/chromedriver")
driver = webdriver.Chrome(service=service)
driver.get("https://www.google.com")
print(driver.title)
driver.quit()
이렇게 service에서 경로를 지정해서 주면 된다.
댓글