Develop Note

Raspberry Pi 4로 크롤링하기 (Selenium, Chrome Driver 환경 구축) 본문

개발 (Ko)/Raspberry Pi

Raspberry Pi 4로 크롤링하기 (Selenium, Chrome Driver 환경 구축)

Chalsu 2022. 3. 4. 10:45

특정 웹사이트에서 필요한 정보들을 수집하기 위해 최근 크롤링을 시작했다.

셀레니움(Selenium)과 Chrome driver를 활용하는 방법으로 사용중인데, Windows 기반 메인 PC에서 크롤링 스크립트를 돌려 놓으면 CPU와 메모리를 은근히 많이 사용해서 PC가 버벅거리는 경우가 발생한다. :(

이를 해결하기 위해서 Raspberry Pi 4(이하 RPI4)를 활용해보기로 했다.

참고로, 사용중인 RPI4 버전과 Python 버전은 다음과 같다.

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

$ python --version
Python 3.7.3

가상환경 생성 (venv)

먼저 기존 RPI4에 설치된 Python 패키지와 충돌하지 않도록 가상환경을 생성하고 활성화 해 주었다.

$ python -m venv .venv
$ source .venv/bin/activate

Selenium 설치

pip로 Selenium 패키지를 설치한다.

(.venv) pi@raspberrypi:~/crawling $ pip install selenium

첫번째 설치 시도는 실패했는데, pip 버전이 낮아서 정보를 제대로 받아오지 못한듯 했다.

이 경우 pip upgrade 후 다시 시도하면 정상적으로 설치가 된다.

에러 로그에서 친절하게 알려줘서 바로 해결할 수 있었다.

pip 업그레이드 후 재설치

(.venv) pi@raspberrypi:~/crawling $ pip install --upgrade pip
(.venv) pi@raspberrypi:~/crawling $ pip install selenium

Chrome Driver 설치

apt install 명령으로 chrome driver를 설치한다.

관련 정보를 아래 링크에서 참조했다.

이전에는 Windows에서 설치하는 것처럼 직접 드라이버 파일을 wget 등으로 받아와서 설정해줬던 듯 한데, 최근 패키지로 설치가 가능해진 것 같다.

덕분에 설치 과정이 간단해졌다.

$ sudo apt install chromium-chromedriver

혹시 아래와 같은 에러가 발생한다면, 패키지 정보를 업데이트 한 뒤 진행하면 된다.

$ sudo apt install chromium-chromedriver

Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 chromium-chromedriver:armhf : Depends: chromium-browser:armhf (>= 4.0.203.0~) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
$ sudo apt update
$ sudo apt install chromium-chromedriver

설치 과정은 완료되었다.

Python 스크립트에서 사용

패키지로 설치한 경우 /usr/bin/chromedriver 경로를 사용하면 된다.

참조했던 Stack Overflow 링크에서는 /usr/lib/chromium-browser/chromedriver 로 알려주고 있는데 실제로 확인해 봤을 때 그 경로는 없었고 /usr/bin 아래 driver 파일이 바로 있었다.

$ ls -al /usr/bin/chromedriver
-rwxr-xr-x 1 root root 11107784 Oct  4 19:42 /usr/bin/chromedriver

내 경우 기존 Windows에서 사용하던 Python code 내 chromedriver 참조 부분을 다음과 같이 수정해서 사용했다.

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

...
# self.service = Service("C:\chromedriver_win32\chromedriver")
self.service = Service("/usr/bin/chromedriver")

self.driver = webdriver.Chrome(service=self.service, options=options)
...

나머지 코드는 모두 동일하고, 실행해보니 잘 동작한다. :)

여기까지 Raspberry Pi 4 환경에서 Selenium 및 Chrome Driver를 사용해서 크롤링 하려는 경우, 환경을 구축하는 방법에 대해서 정리했다.

Selenium을 사용해서 크롤링 하는 자세한 방법은 이 글에서 다루지 않는다.

추후에 기회가 된다면 정리해 볼 예정이다.

Comments