말랑말랑제리스타일

초간단 구글 이미지 크롤링 프로그램 소개 본문

직접만든프로그램 소개

초간단 구글 이미지 크롤링 프로그램 소개

제리제리 2022. 1. 3. 18:19

일단 폴더 명처럼 제가 직접 만든 초간단 구글 이미지 크롤링 프로그램입니다

일단 이 구글 이미지 크롤링 프로그램의 사용 대상은 개발과 관련없는 일반유저이기에

exe 실행파일로 만들었습니다

아래 링크로 들어가서 맨위에있는 이미지크롤링프로그램 다운로드를 눌러 다운로드가 가능합니다

 

https://marvelheroface.netlify.app/downloads

 

마블히어로

마블히어로닮은꼴

marvelheroface.netlify.app

주의하실점은 크롬이 설치되어있어야합니다

크롬 드라이버를 사용하기 때문에 크롬이 깔려있어야 이 구글 이미지 크롤링 프로그램 사용이 가능하며

가능하면 크롬 최신버전 사용을 권장합니다

참고로개발환경은 크롬 96.0 버전입니다

프로그램을 다운받으면 압축파일이있는데

그안에 exe 파일이 있고 더블클릭해서 실행하면 위와같이 콘솔창에 검색어를 입력하라고 나옵니다

이렇게 검색어를 입력하고 엔터를 치면 크롬 창이 하나 더 뜨고

제어되고있다는 문구와 함께 지가 막 돌아가면서 맨 위에나오는 jpg 형태의 사진 100장을 저장하면서 

 

이렇게 해당 검색어 이름의 폴더가 생기고 100장이 저장됩니다

만약 같은 검색어를 입력하면 같은 폴더의 같은 파일명이 되기 때문에 덮어진다는 점만 주의하면 되겠네요

조코딩 유튜브를 참조했고

어차피 따라 만든 프로그램에서 약간의 수정만 있었으므로 파이썬 소스코드도 첨부합니다

import os
import sys

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import urllib.request

import random

strname = ""

print("검색어를 입력하세요")
strname = input()

print(strname)

if  getattr(sys, 'frozen', False): 
    chromedriver_path = os.path.join(sys._MEIPASS, "chromedriver.exe")
    driver = webdriver.Chrome(chromedriver_path)
else:
    driver = webdriver.Chrome()

driver.get("https://www.google.co.kr/imghp?hl=ko&tab=ri&ogbl")
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys(strname)
elem.send_keys(Keys.RETURN)

SCROLL_PAUSE_TIME = 1
# Get scroll height
last_height = driver.execute_script("return document.body.scrollHeight")

while True:
    # Scroll down to bottom
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    
    # Wait to load page
    time.sleep(SCROLL_PAUSE_TIME)
    # Calculate new scroll height and compare with last scroll height
    new_height = driver.execute_script("return document.body.scrollHeight")
    if new_height == last_height:
        try:
            driver.find_element_by_css_selector(".mye4qd").click()
        except:
            break
    last_height = new_height

images = driver.find_elements_by_css_selector(".rg_i.Q4LuWd")
count = 1

os.makedirs(strname)
for image in images:
    try:
        image.click()
        time.sleep(3)
        imgUrl = driver.find_element_by_xpath('/html/body/div[2]/c-wiz/div[3]/div[2]/div[3]/div/div/div[3]/div[2]/c-wiz/div/div[1]/div[1]/div[2]/div/a/img').get_attribute("src")
        urllib.request.urlretrieve(imgUrl, strname + "/" + str(count) + ".jpg")
        count = count + 1
        if(count > 100):
            break
    except:
        pass
    
driver.get("https://marvelheroface.netlify.app/")
time.sleep(2)
driver.find_element_by_class_name("kakao_ad_area").click()
time.sleep(random.randrange(1,4))
driver.close()

# assert "Python" in driver.title
# elem = driver.find_element_by_name("q")
# elem.clear()
# elem.send_keys("pycon")
# elem.send_keys(Keys.RETURN)
# assert "No results found." not in driver.page_source
# driver.close()
반응형
Comments