| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- 백준
- Python
- 백트레킹
- 밸만포드
- 코딩오류
- 2018캐시
- 논문추천
- 파이썬
- 부수입
- ai부수입
- 2018카카오
- 에라스테네스의 체
- 프로그래머스
- AI논문
- 그리디
- 밸만포드알고리즘
- 구글애드몹
- 코딩테스크
- 바이브코딩
- 콜랩오류
- 코테
- 앱제작
- 브루드포스
- DP
- pccp
- 2020카카오
- 투포인터
- 2021카카오
- 투잡
- 코딩테스트
- Today
- Total
kiteday 님의 블로그
[web] Colab으로 selenium 이용해 크롤링 코드짜기 본문
(본 포스팅은 kite_day velog의 게시글을 이전한 내용입니다.)
예전에 짰던 크롤링 코드를 colab 버전으로 필요해서 다시 정리해두었다.
구글에 검색하면 이것저것 많은데 다 이전 selenium 버전으로 되어 있는 등 오류를 잡을 수가 없었다.
그래서 그냥 찾아서 짜버린 코드를 공유한다. (2023년 09월 기준 코드)
Colab notebook code는 여기를 클릭하세요.
colab에서 selenium 크롤링 코드를 돌리는 방법은 다음과 같은 단계를 따른다.
1. 구글 드라이브 마운트
2. Selenium 설치 & 내 구글 드라이브에 chromedriver 설치 (chromedriver는 최초 1회)
3. 실행준비 - chrome_options 설정 등
4. 이미지 크롤링
1. 구글 드라이브 마운트
from google.colab import drive
drive.mount('/content/drive')
가장 먼저 개인의 구글 드라이브와 코드를 연결하자. 이미지 크롤링 저장 위치와 chromedriver 로딩을 위함이다. 위 코드를 실행해서 뜨는 팝업창으로 드라이브 마운트를 완료한다.
2. Selenium 설치 & 내 구글 드라이브에 chromedriver 설치
!pip install selenium
!apt-get update
# (최초 1회)
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver '/content/drive/MyDrive/Colab Notebooks' #
!pip install chromedriver-autoinstaller
colab은 연결할 때마다 다시 패키지를 설치해줘야 한다.
selenium을 제외하고 chromedriver는 내 노트북에 1회 복사해서 저장해주면 된다.
"/content/drive/MyDrive/Colab Notebooks" 대신 본인이 저장하고 싶은 위치를 넣어주면 된다.
!python --version
import selenium
print(selenium.__version__)
패키지가 잘 설치 되었다면 위 처럼 확인해볼 수 있다.
3. 실행 준비
3.1. 라이브러리 임포트
from selenium import webdriver
from seleniu[http://m.webdriver.support.ui](http://m.webdriver.support.ui) import WebDriverWait
from selenium.webdriver.support import expected\_conditions as EC
from seleniu[http://m.webdriver.common.by](http://m.webdriver.common.by) import By
import sys
from seleniu[http://m.webdriver.common.keys](http://m.webdriver.common.keys) import Keys
import urllib.request
import os
from urllib.request import urlretrieve
import time
import pandas as pd
import chromedriver\_autoinstaller # setup chrome options
필요한 라이브러리들을 임포트 해준다.
혹시나 패키지가 없다고 뜨면 !pip install <패키지명> 으로 설치하면 된다.
3.2. chrome_options 설정
chrome\_path = "/content/drive/MyDrive/Colab Notebooks/chromedriver"
옵션을 설정하기 전에 위에서 설치한 chromedriver의 경로를 알려줘야 한다.
sys.path.insert(0,chrome\_path)
chrome\_options = webdriver.ChromeOptions()
chrome\_options.add\_argument('--headless') # ensure GUI is off
chrome\_options.add\_argument('--no-sandbox')
chrome\_options.add\_argument('--disable-dev-shm-usage') # set path to chromedriver as per your configuration
chrome\_options.add\_argument('lang=ko\_KR') # 한국어
chromedriver\_autoinstaller.install() # set the target URL
옵션들을 설정해주자.
colab은 새 창을 지원하지 않기 때문에 --headless 옵션이 필요하다. (로컬에서 하면 상관 없다.)
3.3. 자동 스크롤 함수
def selenium\_scroll\_option():
SCROLL\_PAUSE\_SEC = 3
# 스크롤 높이 가져옴
last\_height = driver.execute\_script("return document.body.scrollHeight")
while True:
# 끝까지 스크롤 다운
driver.execute\_script("window.scrollTo(0, document.body.scrollHeight);")
# 10초 대기
time.sleep(SCROLL\_PAUSE\_SEC)
# 스크롤 다운 후 스크롤 높이 다시 가져옴
new\_height = driver.execute\_script("return document.body.scrollHeight")
if new\_height == last\_height:
break
last\_height = new\_height
크롤링해서 이미지를 더 많이 얻기 위해 자동으로 스크롤 다운하게 만들어주기 위한 함수이다. 레퍼런스가 되는 깃헙의 코드를 가져왔다.
4. 이미지 크롤링!
url = "https://www.google.com/" # set up the webdriver
driver = webdriver.Chrome(options=chrome\_options)
일단 난 구글에서 크롤링을 할 예정이기 때문에 base url을 구글로 잡았다.
# driver 작동 테스트
driver.get(url)
driver.implicitly\_wait(3) # element가 로드될 때까지 지정한 시간만큼 대기할 수 있도록 설정
# driver.get\_screenshot\_as\_file('google\_screen.png')
driver.close()
print(driver)
이 코드를 실행해보면 해당 url에 대하여 잘 작동하는지 알 수 있다.
session이 만들어진다.
courbet = "/content/drive/MyDrive/Colab Notebooks/"
테스트로 쿠르베 그림을 다운받을 것이라서 변수명을 검색할 단어와 똑같이 지었다.
# 키워드 검색하기
base\_url = "[https://www.google.co.kr/imghp?hl=ko](https://www.google.co.kr/imghp?hl=ko)" # 구글 이미지 검색
keyword=input("검색할 키워드를 입력 : ")
# print(type(a))
image\_name = input("저장할 이미지 이름 : ")
driver = webdriver.Chrome(options=chrome\_options)
driver.get(base\_url)
# driver.find\_element("xpath",'//\*\[@id="APjFqb"\]') # 검색창 /html/body/div\[1\]/div\[3\]/form/div\[1\]/div\[1\]/div\[1\]/div/div\[2\]/textarea
# browser = driver.find\_element(By.ID, "APjFqb")
browser = driver.find\_element(By.NAME, "q")
browser.clear()
browser.send\_keys(keyword)
browser.send\_keys(Keys.RETURN)
# 클래스를 찾고 해당 클래스의 src 리스트를 만들자
selenium\_scroll\_option() # 스크롤하여 이미지를 많이 확보
'''이미지 src요소를 리스트업해서 이미지 url 저장'''
images = driver.find\_elements(By.CSS\_SELECTOR,".rg\_i.Q4LuWd") # 클래스 네임에서 공백은 .을 찍어줌
images\_url = \[\]
for i in images:
if i.get\_attribute('src')!= None :
images\_url.append(i.get\_attribute('src'))
else :
images\_url.append(i.get\_attribute('data-src'))
driver.close()
# 겹치는 이미지 url 제거
print("전체 다운로드한 이미지 개수: {}\\n동일한 이미지를 제거한 이미지 개수: {}".format(len(images\_url), len(pd.DataFrame(images\_url)\[0\].unique())))
images\_url=pd.DataFrame(images\_url)\[0\].unique()
if image\_name == 'courbet' :
for t, url in enumerate(images\_url, 0):
urlretrieve(url, courbet + image\_name + '\_' + str(t) + '.jpg')
# driver.close()
중요한 것은 내가 검색할 사이트의 검색창 element (html 맞아요)를 찾아서 검색할 수 있도록 코드에서 넣어주는 것인데 몇가지 방법이 있다.
(1) xpath 찾기
(2) By.ID 찾기
(3) By.NAME 찾기
(4) 기타
위 코드에서 주석처리해둔 부분은 구글 기본 url에 대한 정보들이니 참고하시길. 그 중에서 나는 By.NAME으로 검색 입력창을 찾았다.
최종적으로 코드를 실행하면 구글 검색창에서 키워드를 입력하고 검색될 수 있도록 했다.
# 자원회수 - 코드 실행 마지막에 quit driver
driver.quit()
마지막으로 자원을 회수해야하면 끝!

레퍼런스
[1] https://nariyoo.com/python-how-to-run-selenium-in-google-colab/
[2] https://github.com/inhovation97/Image_classification_pipeline_Project/blob/main/pytorch/pytorch_project-crawling.ipynb
'코드짜기' 카테고리의 다른 글
| 개발 생초보의 바이브 코딩으로 앱 만들기 (3) : Apple Store 계정 등록 (개발자 멤버십 결제), Xcode에서 iOS 배포, 앱스토 (0) | 2026.01.14 |
|---|---|
| 개발 생초보의 바이브 코딩으로 앱 만들기 (2) : 코드를 짜보자. (0) | 2026.01.12 |
| 개발 생초보의 바이브 코딩으로 앱 만들기 (1) : 아이디어부터 기획서까지 (1) | 2026.01.10 |