본문 바로가기
  • 이웃집 찰스
파이썬

pixabay 픽사베이 이미지 자동 다운로드 api 파이썬

by 리뷰하는 김과장 2023. 5. 17.

 

 
 

이번에는 픽사베이 이미지 자동 다운로드를  pixabay  api 를 이용해서 파이썬으로 구현해보도록 하겠습니다. 파이선으로 크롤링을 하거나 자동포스팅 프로그램을 만들려고하면 이미지를 자동으로 다운로드 하는 기술이 필요합니다. 이럴때 사용하시면 매우 유용할겁니다.   pixabay  api 를 이용해서 픽사베이 이미지를 파이썬으로 자동다운로드 하는 방법에 대해 궁금하시다면 따라오세요.

 

 

 

1. 픽사베이 로그인후 api 키 얻기

 

https://pixabay.com/ko/

 

놀라운 무료 이미지 - Pixabay - Pixabay

어디서든 사용할 수 있는 무료 미디어 Pixabay is a vibrant community of creatives, sharing royalty-free images, videos, audio and other media. All content is released by Pixabay under the Content License, which makes it safe to use without ask

pixabay.com

 

위 사이트에 접속해서 회원가입을 한후 로그인을 합니다.

 구글계정이 있다면 쉽게 회원가입이 됩니다. 딱히 적을것도 없이 회원가입이 될겁니다.

로그인을 하신후

 

https://pixabay.com/ko/service/about/api/

 

Pixabay Developer API

Pixabay Developer API Build something beautiful with the world's foremost collection of free high quality images and videos. Welcome to the Pixabay API, which gives you access to over 3.9 million photos, illustrations, vector graphics, and videos - for fre

pixabay.com

 

위 주소로 접속하시면 바로 api 키를 확인하실수가 있습니다.

 

 

 

 

 

get srarted 를 클릭하세요.

 

 

 

아래로 스크롤을 내려보시면 위와같은 화면이 보일겁니다. 여러분의 api 키를 복사해서 메모장에 저장하신후 잘 보관하시기 바랍니다.

 

 

 

 

2. 픽사베이 api 자동 다운로드 파이썬 코드

 

 

 

import requests
import json
from urllib import parse 
import os
import sys
import urllib.request


API_KEY = '***80582-7c******fd05c0d9dbaddc' #당신의 api key
q="너구리" #검색어
maxImages=50 #이미지 숫자
image_type="all" #Accepted values: "all", "photo", "illustration", "vector"
path = "C:/Users/Administrator/Documents/py/wp/image_wd/img/"+q  #저장할 폴더
if not os.path.exists(path):
        os.makedirs(path)
else:
    print('폴더가 존재합니다')

url3 = f' https://pixabay.com/api/?key={API_KEY}&q={q}&image_type=photo&per_page={maxImages}'
res = requests.get(url3)
text= res.text

d = json.loads(text)

print(d)

success=0
for k in range(0,maxImages):
    imgUrl=d['hits'][k]['webformatURL']
    print("url:",imgUrl)
    url = parse.urlparse(imgUrl) 
    name, ext = os.path.splitext(url.path)
    print(ext)


    filename = f'{q}_{k+1}{ext}'      
    saveUrl = path+'/'+filename #저장 경로 결정    
    print(saveUrl)

    #파일 저장   
    req = urllib.request.Request(imgUrl, headers={'User-Agent': 'Mozilla/5.0'})
    try:
        imgUrl = urllib.request.urlopen(req).read() #웹 페이지 상의 이미지를 불러옴
        with open(saveUrl,"wb") as f: #디렉토리 오픈
            f.write(imgUrl) #파일 저장  
        success+=1         

    except urllib.error.HTTPError:
        print('에러')
        sys.exit(0)


print('다운로드 성공 : '+str(success))

 

 

전체 코드는 위와 같습니다. 주석이 있기 때문에 어렵지 않게 해석이 될겁니다.

 

 

 

3. 픽사베이 api  이미지 다운로드 파이썬 코드 해석

위 코드에서 수정해야 할부분에 대해서 알려드립니다.

 

API_KEY = '25680582-7cd41544d9afd05c0d9dbaddc' #당신의 api key
q="너구리" #검색어
maxImages=50 #이미지 숫자
image_type="all" #Accepted values: "all", "photo", "illustration", "vector"
path = "C:/Users/Administrator/Documents/py/wp/image_wd/img/"+q  #저장할 폴더

API_KEY 는 여러분의 키로 넣으셔야 합니다.

픽사베이 홈페이지에서 메모장에 복사해놓으라고한 그 키입니다.

q="너구리" 

이미지 검색어를 넣으시면 됩니다.

maxImages=50

다운로드할 이미지 숫자를 입력하시면됩니다. 200개 이하로 넣으시면 됩니다.

 

image_type="all" 

이미지 타입을 지정할수도 있습니다. 오직 포토만 원할경우에는

image_type="photo"

오직 일러스트만 원할경우에는

image_type="illustration"

오직 벡터이미지만 원할경우에는

image_type="vector"

로 수정하시면됩니다.

 

 

 

4. 픽사베이 api 결과값 json 파일 해석

 

 

{
"total": 4692,
"totalHits": 500,
"hits": [
    {
        "id": 195893,
        "pageURL": "https://pixabay.com/en/flower-195893/",
        "type": "photo",
        "tags": "blossom, bloom, flower",
        "previewURL": "https://cdn.pixabay.com/photo/flower-195893_150.jpg"
        "previewWidth": 150,
        "previewHeight": 84,
        "webformatURL": "https://pixabay.com/get/35bbf209e13e39d2_640.jpg",
        "webformatWidth": 640,
        "webformatHeight": 360,
        "largeImageURL": "https://pixabay.com/get/ed6a99fd0a76647_1280.jpg",
        "fullHDURL": "https://pixabay.com/get/ed6a9369fd0a76647_1920.jpg",
        "imageURL": "https://pixabay.com/get/ed6a9364a9fd0a76647.jpg",
        "imageWidth": 4000,
        "imageHeight": 2250,
        "imageSize": 4731420,
        "views": 7671,
        "downloads": 6439,
        "likes": 5,
        "comments": 2,
        "user_id": 48777,
        "user": "Josch13",
        "userImageURL": "https://cdn.pixabay.com/user/250x250.jpg",
    },
    {
        "id": 73424,
        ...
    },
    ...
]
}

 

json 파일은 위와같이 응답이 나옵니다.

 

위의 형식으로 볼때 webformatURL 첫번째 값을 읽어올려면

['hits'][0]['webformatURL'] 입니다.

 

webformatURL 두번째 값을 읽어올려면

['hits'][1]['webformatURL']  입니다.

 

webformatURL은 저용량 이미지라고 생각하시면 되겠습니다.

위에 제가 소개한 코드는 webformatURL 즉 저용량 이미지를 다운로드하는 코드입니다.

 

만약 고화질의 포멧의 이미지를 저장하고 싶다면 코드를 바꾸어야 합니다.

예를들어 largeImageURL 값으로 변경하고싶다면 

 

 

for k in range(0,maxImages):
    imgUrl=d['hits'][k]['webformatURL']

 

위 코드를 아래로 변경하시면 고화질의 이미지를 다운로드하는 코드로 변하게 됩니다.

 

for k in range(0,maxImages):
    imgUrl=d['hits'][k]['largeImageURL']

 

 

 

 

이렇게 해서 pixabay  api 를 이용해서 픽사베이 이미지를 파이썬으로 자동다운로드 하는 방법에 대해 자세히 알아보았습니다.  pixabay  api 를 이용해서 픽사베이 이미지를 파이썬으로 자동다운로드 하는 방법에 대해 궁금하셨던분들에게는 유용한 정보가 되었을듯합니다. 다음에는 더욱 유용한 정보로 찾아올것을 약속드리며 이번 포스팅은 여기까지 하도록 하겠습니다. 오늘도 행복한 하루 되세요~ ^^

 

 

 

♥공감은 고래도 춤추게 합니다~ ^^

 

 

 

댓글