본문 바로가기
  • 야근없는 삶을 위하여
파이썬

Python 이미지 url을 이용한 다운로드 (urllib.request.urlretrieve)

by 우당코 2024. 3. 15.
반응형

파이썬으로 이미지 url을 이용하여 다운로드

다량의 이미지 url 정보가 있다면,

이 이미지 들을 다운로드 하고 싶을 때 간단하게 사용할 수 있는 프로그램을 만들어 보자.

 

엑셀에 정보를 입력해 두면 그대로 다운로드 가능하도록 만들겠다.

응용해서 상품명과 이미지 url을 입력하면 상품명으로 jpg 파일이 만들어 지도록 하겠다.

 

1. 라이브러리 설치

  • 엑셀을 읽고 가공하기 위한 pandas
  • 이미지를 다운 받기 위한 urllib

라이러리 설치를 모르겠다면 아래 글 참고

 

Python excel 열 추출하기 - 1 (라이브러리 설치)

Pycharm 기본 설정 이제 pycharm을 설치했으니 프로그램을 만들어 보자. 만들기 전에 기본 설정이 필요하다. 나는 업무를 하면서 회사 DB에 있는 엑셀 파일을 다운 받아서 다른 곳에 업로드 하거나,

udangco-coding-record.tistory.com

 

2. 이미지 하나 다운로드

이미지 하나만 다운로드 해보자.

a. 기본 사용법

import os
import urllib.request

urllib.request.urlretrieve(이미지 url, 이미지 파일명)

이미지 url과 파일명을 입력하면 된다.

 

b. 예시

# 예시

import os
import urllib.request

urllib.request.urlretrieve("https://images.unsplash.com/photo-1682686581660-3693f0c588d2?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDF8MHxlZGl0b3JpYWwtZmVlZHwxfHx8ZW58MHx8fHx8", "스쿠버.jpg")

 

c. url과 파일명 변수 지정

코드가 매우 길어져서 보기 힘들다.

url과 파일명을 변수로 지정해서 사용해 보자.

url = "https://images.unsplash.com/photo-1682686581660-3693f0c588d2?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDF8MHxlZGl0b3JpYWwtZmVlZHwxfHx8ZW58MHx8fHx8"
file_name = "스쿠버.jpg"
urllib.request.urlretrieve(url, file_name)

 

 

3. 엑셀 활용하기 (여러 이미지 다운로드를 위한 작업)

image_url.xlsx이라는 파일을 만들어서 여기다가 정보를 입력해서 불러와 보자.

a. 엑셀 파일 만들기

 

해당 파일을 만들고 프로젝트 폴더에 집어 넣자.

 

b. 엑셀파일 열기

import os
import urllib.request
import pandas as pd

image_url = pd.read_excel("image_url.xlsx")

엑셀 파일 열기를 모르겠다면 아래 글 참고

[파이썬] - Python excel 열 추출하기 - 2 (excel 파일 열기)

 

c. 엑셀 리스트로 변환

image_url = pd.read_excel("image_url.xlsx")
img_list = image_url.values.tolist()

image_url 데이터 프레임의 값을 가져와서 리스트로 변경했다.

 

4. 여러개 이미지 변경

3번 과정의 엑셀에서 불러온 정보를 이용해서 다운로드 해보자.

 

a. 반복문 사용

import os
import urllib.request
import pandas as pd

image_url = pd.read_excel("image_url.xlsx")
img_list = image_url.values.tolist()

for i, j in img_list:
    url = j
    file_name = i + '.jpg'
    urllib.request.urlretrieve(url, file_name)

img_list 안에는 [파일명, url] 순으로 들어가 있다.

그래서 for loop를 사용하면 아래와 같다고 생각하면 된다.

i = 파일명

j = url

 

b. 폴더 만들기

새로운 폴더를 생성해서 다운로드 이미지 파일을 저장해보자.

# 이미지 저장 폴더 없으면 생성
img_folder = './download_img'
if not os.path.exists(img_folder):
    os.makedirs(img_folder)

폴더가 없으면 생성하도록 조건문을 사용했다.

 

for loop를 수정해서 이 폴더 안으로 이미지를 넣자.

for i, j in img_list:
    url = j
    file_name = img_folder + '/' + i + '.jpg'
    urllib.request.urlretrieve(url, file_name)

 

 

전체코드

import os
import urllib.request
import pandas as pd

image_url = pd.read_excel("image_url.xlsx")
img_list = image_url.values.tolist()

# 이미지 저장 폴더 없으면 생성
img_folder = './download_img'
if not os.path.exists(img_folder):
    os.makedirs(img_folder)

for i, j in img_list:
    url = j
    file_name = img_folder + '/' + i + '.jpg'
    urllib.request.urlretrieve(url, file_name)

 

간단하게 끝났다.

 

업무 중에 회사 erp나 이미지 url 정보가 있는 엑셀 파일을 다운로드 받을 수 있다면

엑셀에서 필요한 열만 추출하는 방법으로

파일명, url이 있는 엑셀을 만들 수 있을 것이다.

이것을 이 코드에 그대로 적용하면 완료

 

엑셀에서 필요한 열만 추출하는 방법을 모른다면 아래 글을 따라 차근차근 해보아라.

 

Python excel 열 추출하기 - 1 (라이브러리 설치)

Pycharm 기본 설정 이제 pycharm을 설치했으니 프로그램을 만들어 보자. 만들기 전에 기본 설정이 필요하다. 나는 업무를 하면서 회사 DB에 있는 엑셀 파일을 다운 받아서 다른 곳에 업로드 하거나,

udangco-coding-record.tistory.com

 

 

반응형