본문 바로가기
Integration & Python

파이썬 셀레니움 구글 이미지 자동 다운로드 예제 소스

by 누워서 코딩 2021. 4. 28.

파이썬으로 구글 이미지 자동 다운로드 예제 소스 공유해 봅니다.

제가 티스토리 블로그 포스팅할 때 아래 작업된 소스를 활용해서 실제로 유용하게 사용하고 있습니다.

 

파이썬(Python) 팁 정리 바로가기 >>

 

아래 elem.send_keys("") 의 ""에 검색하고자 하는 키워드 입력하고 실행만 하면,

본인 PC의 저장경로인 (sav_path = "C:\\Images\\google\\")

저장됩니다. (저장 경로는 임의로 변경 가능하니 변경하시면 됩니다.)

 

간단하죠?

 

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

options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--ignore-ssl-errors')
driver = webdriver.Chrome(chrome_options=options)

driver.get("https://www.google.co.kr/imghp?hl=ko&authuser=0&ogbl")
elem = driver.find_element_by_name("q")
elem.send_keys("무료 이미지")
elem.send_keys(Keys.RETURN)

#click to 도구
tool_button = driver.find_element_by_css_selector("#yDmH0d > div.T1diZc.KWE8qe > c-wiz > div.ndYZfc > div > div.tAcEof > div.PAYrJc > div.ssfWCe > div > div")
tool_button.click()

time.sleep(1)

#click to Usage Rights 
license_button = driver.find_element_by_css_selector("#yDmH0d > div.T1diZc.KWE8qe > c-wiz > div:nth-child(2) > c-wiz.Npn1i > div > div > div.qcTKEe > div > div:nth-child(5) > div > div.xFo9P.r9PaP")
license_button.click()

time.sleep(1)

#click to Creative Commons licenses 
license_button = driver.find_element_by_css_selector("#yDmH0d > div.T1diZc.KWE8qe > c-wiz > div:nth-child(2) > c-wiz.Npn1i > div > div > div.irf0hb > div > a:nth-child(2) > div > span")
license_button.click()

time.sleep(1)

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")

sav_path = "C:\\Images\\google\\"
count = 1
for image in images:
    try:
        image.click()
        time.sleep(2)
        #imgURL = driver.find_element_by_css_selector(".n3VNCb").get_attribute("src")
        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/div[2]/a/img').get_attribute("src")
        print("imgURL = ",imgURL)
        urllib.request.urlretrieve(imgURL, sav_path + str(count) + " .jpg")
        count = count + 1 
    except:
        pass

driver.close()

물론 바로 실행에 앞서 기본적인 파이썬 관련 환경적인 세팅은 되어야겠죠.

 

기본 환경 세팅은 이전 제 블로그 참조하셔서 다음 순서대로 따라 하시면

쉽게 설치 가능할 거라 생각됩니다.

 

 

파이썬 다운로드 및 설치 방법

Linx/UNIX, Mac OS X 및 Windows 등 운영체제에 맞춰 다운로드 가능합니다. 여기서는 Windows OS 만을 다룬다. 1. 우선 파이썬 공식 홈페이지의 'Downloads'로 들어간다. (현재는 Python 3.8.2가 최신이다.) 특정 소

freernd.tistory.com

 

 

파이썬 셀레니움 이미지 크롤링 예제

1. venv 가상 환경 설치 vnnv 가상환경 가이드 문서 venv — Creation of virtual environments Source code: Lib/venv/ The venv module supports creating lightweight “virtual environments”, each with their own independent set of Python package

freernd.tistory.com

  

참고로 저는 파이썬 실행 툴을 파이참을 쓰다가 지금은 비주얼 스튜디오 코드(Visual Studio Code)로 변경했습니다.

 

다른 이유는 없고, 비주얼 스튜이오 코드가 파이참 대비해서 훨씬 가벼웠습니다.

 

개취인데 저는 기능이 많더라도 좀 가벼운 걸 선호하는 편입니다.

 

즉 어느 걸 써도 무방하다는 말입니다.

 

혹시 하시다가 벽돌 상황을 만나시면 댓글로 남겨주세요.

물론 구글링 해보시면 거의 문제점 찾을 수 있겠지만,

제가 아는 범위에서 답변해 드리겠습니다.


이 블로그의 다른 포스팅 보기

 

파이썬 파일 복사하기

파일 복사하기 라이브러리 import shutil shutil은 파일 복사 기능을 제공하는 함수입니다. 가장 일반적인 함수는 shutil.copy()이고 shutil.copy2()도 있습니다. 이 두 개 함수의 차이점인 간단합니다. 복사

freernd.tistory.com

댓글