[Python] 구글 코랩(Google Colaboratory)에서 Selenium 사용하기


사진 출처 : https://miteshparmar1.medium.com/structure-your-code-better-in-google-colab-with-text-and-code-cells-b6fa73feec20

 

안녕하세요 파일입니다. 오늘은 Google Colab에서 Selenium을 사용하는 방법에 대해 포스팅 하겠습니다.

 

구글 코랩은 Jupyter NoteBook과 비슷한 방식으로 실행되는데

저도 정확하게 아는 것은 아니지만, 서버가 실행되서 그 웹페이지에서 코딩을 하고 거기서 코딩을 하면 서버가 커널을 실행해 코드를 연산합니다.

 

참고 : https://tobefreein2040.tistory.com/10

 

3. Jupyter Notebook

안녕하세요. 자꿈두입니다. 오늘 공부할 내용은 Jupyter Notebook입니다. Jupyter Notebook? Anaconda를 설치하게 되면 자동으로 설치되는 응용 프로그램중 하나입니다. Jupyter Notebook을 사용하게 되면요 1. 코

tobefreein2040.tistory.com

 

즉 실제 Client, Server 컴퓨터가 분리되어 있어 Client 컴퓨터에선 연산을 진행하지 않고 외부에서 연산을 진행하기 때문에 컴퓨터 성능이 매~우 낮더라고 하더라도 원격으로 실행되는 곳의 컴퓨터 성능이 좋다면 인터넷이 된다는 가정하에 성능에 구애 받지 않고 코딩이 가능해집니다.

 

(물론 서버와 통신하기 때문에 인터넷이 끊기면 코딩이 불가능해지고 네트워크 지연에 따라 딜레이가 발생한다는 단점도 있습니다.)

 

이것이 구글 코랩의 장점이며 딥러닝 같은 빡센 작업을 할때 고성능 GPU를 이용해 병렬 작업을 해야하는 경우가 있는데 집에 고사양 컴퓨터가 없다면 이런것을 할때 도움을 많이 받을 수 있습니다.

 

그래서 구글 코랩에서 Selenium은 어떻게 실행하는데?

방금전의 설명을 이해하셨다면 코드 실행을 해당 컴퓨터에서 진행하지 않는다는걸 알 수 있습니다.

그래서 Selenium 같이 웹브라우저를 직접 띄어서 제어하는 경우에는 조금 문제가 생깁니다.

 

하지만 Google Colab에서도 ChromeDriver을 사용해 데이터를 가져올 수 있습니다.

 

아래 코드처럼 실행해주시면 됩니다.

 

#이 부분은 처음 한번만 실행하면 됌.
!pip install selenium
!apt-get update
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin

# -*- coding: UTF-8 -*-
import time
from selenium import webdriver

#Colab에선 웹브라우저 창이 뜨지 않으므로 별도 설정한다.
 
options = webdriver.ChromeOptions()
options.add_argument('--headless')        # Head-less 설정
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('chromedriver', options=options)

#해당 url로 이동
url = "https://www.naver.com/" 
driver.get(url)

update = driver.find_element_by_css_selector('#NM_TS_ROLLING_WRAP > div > div')
print(update.text)

 

네이버에서 위 빨간색으로 표시된 부분을 가져오는 예제입니다.

저 부분은 정보가 표시되는 부분으로 이슈, 증시 같은게 계속 바뀌면서 표시되는데 아마 javascript ajax로 계속 바꾸는 것으로 추정됩니다.

 

파이썬 requests 같은걸 사용하면 단순히 요청 - 응답에 의한 데이터만 표시하기 때문에 이후 응답 데이터에 포함된

자바스크립트가 실행되서 동적으로 내용이 바뀌면 로직을 다 뜯어서 보지 않는 이상은 대응이 어렵습니다.

 

Colab에서 맨 아래 부분을 계속 실행해보면 알겠지만 갱신할때마다 내용이 계속 바뀝니다.

당연하지만 구글 콜랩은 웹브라우저 창을 직접 띄어서 제어할 수 없기 때문에 headless(창이 안보이는 형태)로 제어합니다.

 

Selenium 자체도 느린데 구글 서버를 경유해서 코딩하므로 좀 많이 느립니다 ㅠ

 

Additional Source Code

https://colab.research.google.com/drive/1bTLdBhJGudujZxnMkUe46TyA6MoKZQkg?usp=sharing

 

Colab_Selenium_Test.ipynb

Colaboratory notebook

colab.research.google.com

Google Colab에서 직접 실행해보시고 싶은 분들은 위의 링크를 가셔서 소스코드를 참고 하시길 바랍니다.

COMMENT WRITE