티스토리 뷰

보통 로컬 pc 에 python 설치후에 selenium 라이브러리를 추가하여 사용하곤 하는데, docker 이미지인 jupyter/datascience-notebook (https://hub.docker.com/r/jupyter/datascience-notebook/) 를 사용해서 원래 pc 에 설치되있는 firefox 를 제어하는 방법을 정리한다. docker 컨테이너에서 로컬pc 의 웹브라우저를 원격 제어하게 되다보니, 개념상 한 머신으로 연동되는게 아니기때문에, selenium server 를 통해서 remote webdriver 제어가 필요하다. 굳이 이렇게 한 이유는, python 설치에 들어가는 개발환경 설치의 시간 및 노력, 버전관리 등 직접하기보다는 docker 이미지로 간편히 버전별로 선택해서 개발하고 싶었다.

 

개발환경 설치

몇가지 준비사항이 필요하며, 나의 경우 아래 버전으로 진행되었다.

# 설치사항 상세버전
1 docker desktop docker desktop version 3.2.2 (mac)
2 jupyter docker 이미지 jupyter/datascience-notebook:python-3.8.8
3 firefox webdriver 다운 geckodriver-v0.29.1-macos.tar.gz
4 java jdk openjdk 14.0.2
5 selenium standalone server selenium-server-4.0.0-beta-4.jar

 

jupyter/datascience-notebook 의 이미지에는 selenium 설치가 안되있어서, 추가적인 docker build 작업이 필요하다.  아래와 같이 Dockerfile 을 만들고, docker build 처리한다.

FROM jupyter/datascience-notebook:python-3.8.8
RUN pip install selenium

 

firefox 브라우저를 제어할 예정이며, firefox webdriver 파일을 https://github.com/mozilla/geckodriver/releases 에서 다운받는다. 관련해서는 본인 설치된 브라우저 버전과 selenium 버전, geckodriver 버전이 맞아야하니 https://firefox-source-docs.mozilla.org/testing/geckodriver/Support.html 에서 확인을 해야 한다. 

 

selenium server 를 사용하려면 java 가 설치되어 있어야 하며, 나의 경우 mac 환경이다보니 brew 로 openjdk14 를 설치했다. (https://github.com/AdoptOpenJDK/homebrew-openjdk 참고)

brew tap AdoptOpenJDK/openjdk
brew install --cask adoptopenjdk14

 

selenium-server 는 https://www.selenium.dev/downloads/ 에서, 4.0.0-beta-4 를 선택해서 다운받았다.

반응형

 

selenium remote 제어 하기

아래 명령어로 selenium-server 를 기동한다. 참고로 webdriver 다운받았던 geckodriver 파일을 해당 jar 파일과 같은 폴더에 나두어야 하며, 다른 폴더에서 관리하고 싶으면, 환경변수에 넣어야 한다. (참고 : https://www.selenium.dev/documentation/en/webdriver/driver_requirements/ )

실행하고나면, http://192.168.25.43:4444 로 접속할 url 이 나오는데 이 주소를 통해서 원격으로 웹브라우저를 제어가능하다. 

> java -jar selenium-server-4.0.0-beta-4.jar standalone
23:00:24.229 INFO [LoggingOptions.configureLogEncoding] - Using the system default encoding
...(중략)...
23:00:24.968 INFO [Standalone.execute] - Started Selenium Standalone 4.0.0-beta-4 : http://192.168.25.43:4444

 

docker run 으로 jupyter 를 실행하고 접속한다. 

docker run --rm --name my-python-3.8.8 \
	-p 8888:8888 \
	-e JUPYTER_ENABLE_LAB=yes \
	-v $PWD/mount/work:/home/jovyan/work \
	python-3.8.8

 

아래 명령어를 실행하고 나면,

 

아래와 같이 firefox 웹브라우저가 자동으로 뜨면서 naver 페이지가 뜬다. 주소창에 잘보면, 로봇모양에 마우스를 가져다 대면, "브라우저가 원격 제어 중입니다." 라는 툴팁이 뜨게 된다. 

 

근데 아이피는 계속 변동이 되기때문에, docker 에서는 host 에 접속할 수 있도록 DNS 이름(host.docker.internal)을 제공한다.(참고 : https://docs.docker.com/docker-for-mac/networking/) http://192.168.25.43:4444 처럼 직접 ip 적는거 보다는, http://host.docker.internal:4444 로 하는게 아이피 변동시에 발생할 에러가 없을거 같다. 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함