일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 인공지능
- dl
- CUDA
- QGIS설치
- GPU
- 빅데이터분석기사
- qgis
- 캐글
- ㅂ
- K최근접이웃
- gradio
- 1유형
- ml 웹서빙
- 머신러닝
- KNN
- 2유형
- 3유형
- 공간분석
- 실기
- 성능
- streamlit
- 공간시각화
- Ai
- fastapi
- webserving
- 예제소스
- Kaggle
- pytorch
- 딥러닝
- DASH
Archives
- Today
- Total
에코프로.AI
[Python] 크롤링 (Feat. 구글 이미지 저장) 본문
- 필요 라이브러리 설치
!apt-get update
!apt install chromium-chromedriver # 크롬드라이버 설치
!pip install selenium # selenium 설치
- 구현 코드
- Crome webdriver 를 사용해서, selenium을 사용하는 경우라, 로컬에서 실행해야해서, vs code 에서 실행해야 한다.
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import urllib.request
import time
import os
def img_crawler():
query = input("검색어 : ")
image_cnt = int(input("수집할 이미지 개수 : "))
# 'H:\dzp\dog_cat\cat'
save_dir = input("저장할 디렉토리 : ")
driver = webdriver.Chrome()
os.makedirs(save_dir, exist_ok=True) # 디렉토리 생성 (이미 존재하면 무시)
os.chdir(save_dir) # 작업 디렉토리 변경
URL = 'https://www.google.com/search?tbm=isch&q='
driver.get(URL + query) # 검색어를 포함한 URL로 이동
# =======================================================
# 무한 스크롤 처리
# 스크롤 전 높이
last_height = driver.execute_script("return window.scrollY")
# 무한 스크롤
while True:
# 맨 아래로 스크롤을 내린다.
driver.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END)
# 스크롤 사이 페이지 로딩 시간
time.sleep(1)
# 스크롤 후 높이
new_height = driver.execute_script("return window.scrollY")
if new_height == last_height:
break
last_height = new_height
# =======================================================
# 이미지 정보 추출
soup = BeautifulSoup(driver.page_source, 'html.parser')
# 2024.08.23 duzin
# g-img 태그의 mNsIhb 클래스 모두 조회
image_info_list = driver.find_elements(By.CSS_SELECTOR, '.mNsIhb')
image_and_name_list = []
print('=== 이미지 수집 시작 === / ' + str(len(image_info_list)))
downlaod_cnt = 0
for i, image_info in enumerate(image_info_list):
# 설정한 "수집할 이미지 수" 이상이면 빠지기~
if i == image_cnt:
break
# 각 각 이미지 경로정보 가져오기
save_image = image_info.find_element(By.CSS_SELECTOR, 'img').get_attribute('src')
image_path = os.path.join(query.replace(' ', '_') + '_' + str(downlaod_cnt) + '.jpg')
image_and_name_list.append((save_image, image_path))
downlaod_cnt += 1
print(' ※ ', i, '번째, ', save_image, ' 파일 다운로드가 완료되었습니다!')
# Local 로 이미지 다운로드
for i in range(len(image_and_name_list)):
urllib.request.urlretrieve(image_and_name_list[i][0], image_and_name_list[i][1])
print('=== 이미지 수집 종료 ===')
driver.close() # 브라우저 닫기
- 실행
# 검색어 : 고양이
# 수집할 이미지 개수 : 100
# 저장할 디렉토리 : H:\dzp\dog_cat\cat
img_crawler()
- 크롤링 설정항목 입력
- 이미지 저장 확인
- 소스파일
20240823_구글이미지크롤러.ipynb
0.24MB
끝~

'AI Tutorial' 카테고리의 다른 글
[머신러닝] RNN(Recurrent Neural Network) (0) | 2024.08.26 |
---|---|
[머신러닝] CNN(Convolutional Neural Network) (0) | 2024.08.23 |
[Tensorflow] mnist 데이터셋 손글씨 예측 모델링(Feat. DNN 모델) (0) | 2024.08.22 |
[Tensorflow] Tensorflow 소개 및 간단한 모델링 (0) | 2024.08.22 |
[Python] 크롤링 예제 (Feat. 멜론 차트) (0) | 2024.08.21 |