16일차에 사용한 구글 이미지 자동 수집 활용 후 필요하지 않는 사진 삭제
# 1.필요 모듈 임포트
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import urllib.request
import time
import os
# 2.폴더 생성 함수 선언
def createFolders(directory):
try:
if not os.path.exists(directory):
os.makedirs(directory)
except:
print('Error: creating directory', directory)
# 3.키워드 입력 및 폴더 생성
keyword = '이디야 아이스'
createFolders('./'+keyword+'_img_download')
print('1.키워드 설정 및 폴더 생성 완료.....')
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox') # 보안 기능인 샌드박스 비활성화
options.add_argument('--disable-dev-shm-usage') # dev/shm 디렉토리 사용 안함
service = ChromeService(executable_path=ChromeDriverManager().install())
driver = webdriver.Chrome(service=service,options=options)
# 4. 키워드 검색
print('2. 키워드 검색', keyword)
driver.get('https://www.google.co.kr/imghp?hl=ko')
# 검색창에 키워드 입력 - > 입력태그의 name 속성을 이용해서 요소 찾기
# 구글 이미지 검색 textarea name="q"
input_keyword = driver.find_element(By.NAME,'q')
input_keyword.send_keys(keyword)
# 검색(엔터) 키 전송
input_keyword.send_keys(Keys.RETURN)
# 5. 스크롤 내리기
# 대문자는 절대로 바꾸지 않는 변수
SCROLL_PAUSE_TIME = 3
# 댓글 수집을 위한 스크로 내리기
last_height = driver.execute_script('return document.body.scrollHeight')
while True:
print('스크롤 중...', keyword)
#스크롤을 최대로 내리기
driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')
time.sleep(SCROLL_PAUSE_TIME)
new_height = driver.execute_script('return document.body.scrollHeight')
if new_height == last_height:
break
last_height = new_height
time.sleep(SCROLL_PAUSE_TIME)
# 6. 이미지 검색 개수 확인 및 다운로드
images =[]
links = []
div = driver.find_elements(By.CLASS_NAME,'H8Rx8c')
for i in div:
img_tag = i.find_element(By.CLASS_NAME,'YQ4gaf')
images.append(img_tag)
print('4. 이미지 개수 확인....')
for image in images:
if image.get_attribute('src') !=None:
links.append(image.get_attribute('src'))
print(keyword, ' 찾은 이미지 개수',len(links))
time.sleep(SCROLL_PAUSE_TIME)
print('5. 이미지 다운로드 시작')
for i, v in enumerate(links):
try:
url = v
start = time.time()
urllib.request.urlretrieve(url, './' + keyword + '_img_download/' + keyword + '_' + str(i + 1) + '.jpg')
print(i+1,'/',len(links),keyword,'다운로드..Download time:',str(time.time()-start)[:5],'초')
except:
# 1/957 다운로드 실패..... 몇번째 사진이 다운에 실패 했는지확인
print(i+1,'/',len(links),keyword,'다운로드 실패.....')
pass
'ABC 부트캠프 데이터 탐험가 4기' 카테고리의 다른 글
[27 일차] ABC 부트캠프 : 딥러닝 기초(1) (0) | 2024.08.11 |
---|---|
[26 일] ABC 부트캠프 : 머신러닝 팀 프로젝트 (2) (0) | 2024.08.08 |
[24 일차] ABC 부트캠프 : 머신러닝 (6) Code21, FaceDetecer (0) | 2024.08.06 |
[23 일차] ABC 부트캠프 : 머신러닝 (5) Code18~Code20 (0) | 2024.08.05 |
[22 일차] ABC 부트캠프 : 머신러닝 (4) Code12~Code17 (0) | 2024.08.02 |