Python

파이썬[Python] 포털 사이트 사진(이미지) 가져오는 방법 및 이미지 리사이즈(resize) 방법

파이썬 라이브러리 중에 셀레니움(Selenium)을 이용하여 구글 포털 사이트에서 이미지(사진 포함)를 대량으로 가져온 후에 이미지 사이즈를 일괄 변경할 수 있어요. 이미지를 가져와서 블로그나 사이트 등에 사용해야 할 경우에는 저작권이 없는 무료 이미지만 사용해야 합니다. request 라이브러리의 urlretrieve() 메서드를 사용하여 이미지를 가져올 수 있어요.

혹시나 셀레늄을 이용한 사이트 자동 로그인방법과 셀레늄 이용시 크롬 드라이버 오류 관련 해결방법에 대해 아래 링크합니다.

구글 사이트에서 무료 이미지 가져오는 방법

구글 검색 페이지의 query(q) 파라미터에 “무료 풍경 사진” 으로 조회하였습니다. 본인에게 맞게 파라미터 값을 변경하여 필요한 사진을 가져오면 됩니다. 가령 “무료 동물 사진”, “무료 도심 사진” 등등

import time
from selenium import webdriver
from urllib.request import urlretrieve

# 크롬(Chrome) 브라우저 사용
browser = webdriver.Chrome('./chromedriver')

# 로깅(logging) 메시지 줄이기
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])

search = "풍경 사진"
url = "https://www.google.com/search?q=" + search
browser.get(url)

# 5초간 정지
time.sleep(5)

다음 작업으로 이미지 태그를 찾아서 이미지를 가져온 후 내 컴퓨터에 저장하는 스크립트를 구현합니다

images = browser.find_elements_by_tag_name("img")

# 이미지 저장위치 생성
directory = "./images/"
if not os.path.exists(directory):
    os.mkdir(directory)

#이미지 가져올 총 개수 10
limit = 10
cnt = 0
for image in images:
    image_source = image.get_attribute("src") # 이미지 URL
    if image_source != None:
        target = directory + str(cnt) + ".png"
        urlretrieve(image_source, target) # 이미지 다운로드
    cnt += 1
    if cnt == limit:
        break

다음 작업은 이미지를 일괄로 리사이즈 할 차례 입니다. 이미지의 사이즈를 변경하고자 하는 사이즈가 400×400인경우 이 이미지 사이즈보다 작은 이미지는 확대되어 이미지가 깨지기 때문에 제거해야 합니다.

 # 이미지 크기가 작은 경우 이미지 제거하자
        img = cv2.imread(target)
        height, width, channel = img.shape
        if height < 400 or width < 400:
            os.remove(target)
            continue
        # 이미지 크기를 400 X 400로 resize
        res = cv2.resize(img, dsize=(400, 400))
        cv2.imwrite(target, res)

[ 스크립트]

import os
import cv2
import time
from selenium import webdriver
from urllib.request import urlretrieve

browser = webdriver.Chrome('./chromedriver')

# 로깅(logging) 메시지 줄이기
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])

search = "무료 풍경 사진"
url = "https://www.google.com/search?q=" + search
browser.get(url)

# 5초간 정지
time.sleep(5)

# 이미지 태그 찾기
images = browser.find_elements_by_tag_name("img")

# 이미지를 저장할 폴더 생성
directory = "./images/"
if not os.path.exists(directory):
    os.mkdir(directory)

# 이미지 정보를 체크
limit = 10
cnt = 0
for image in images:
    image_source = image.get_attribute("src") # 이미지 URL
    if image_source != None:
        target = directory + str(cnt) + ".png"
        urlretrieve(image_source, target) # 이미지 다운로드
        # 이미지 크기가 작은것은 제거
        img = cv2.imread(target)
        height, width, channel = img.shape
        if height < 400 or width < 400:
            os.remove(target)
            continue
        # 이미지 크기를 400 X 400로 변경
        res = cv2.resize(img, dsize=(400, 400))
        cv2.imwrite(target, res)
        cnt += 1
    if cnt == limit:
        break

이번 포스팅에서는 셀레늄을 이용하여 포털 사이트 구글에서 이미지 검색 및 내 컴퓨터에 저장하는 방법과 가져온 이미지를 일괄로 리사이즈 변경 하는 방법에 대해 알아보았습니다.

Leave a Reply

error: Content is protected !!