프로젝트를 진행하던 중, 키워드와 유사한 이미지를 로드할 수 있는 서비스를 만들어야했습니다. 그래서 저희는 API를 사용하기로 하였고, 이 글은 네이버 검색 API를 이용하여 이미지를 불러오기로 결정했습니다.
1. 네이버 검색 API를 사용한 이유.
저희 서비스는 한국 라디오 컨텐츠를 이용하는 서비스입니다. 이 음성을 텍스트로 변환한 후, 사용자에게 시각적인 정보를 제공하는 프로젝트인데, 이 프로젝트에서 문단의 키워드를 뽑아 해당 키워드와 관련된 이미지를 띄워서 시각자료를 제공하고자 하였습니다.
어떤 단어에 따라서 관련된 이미지를 제공하는 API는 구글, Bing 등 많습니다. 또한 크롤링을 이용해서 가져올 수도 있죠. 하지만 크롤링을 사용하면, 웹 서비스의 디자인이 바뀌거나 하는 등의 일이 발생하게 되면 계속 디버깅을 해줘야하는 번거로움이 있어서 크롤링은 배제하였습니다.
또한, 이 서비스의 타켓층이 대한민국 사람들이기 때문에, 대한민국 사람들에게 가장 대중성이 있는 검색 엔진인 네이버를 사용하기로 하였습니다.
2. 네이버 검색 API를 사용하는 방법
생각보다 간단합니다. 이 API는 오픈소스이기에, 무료로 사용이 가능합니다. 하지만 검색 API는 일일 25,000회입니다. 이는 1초마다 계속 요청해도 7시간이나 하루에 사용할 수 있으니, 저희 서비스에서 차질이 없다고 생각하였습니다.
우선 아래 링크에 있는 애플리케이션 등록 부분을 따라하셔서, 개인 인증키와 secret 번호를 발급받아야합니다.
이제 모든 준비는 끝났습니다. 파이썬을 이용해서 코드를 작성해봅시다.
import os
import sys
import urllib.request
import json
def extract_img(client_id, client_secret, q):
client_id = client_id
client_secret = client_secret
encText = urllib.parse.quote(q)
url = "https://openapi.naver.com/v1/search/image?query=" + encText # JSON 결과
request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)
response = urllib.request.urlopen(request)
rescode = response.getcode()
if(rescode==200):
response_body = response.read()
return json.loads(response_body)["items"][0]["link"]
else:
print("Error Code:" + rescode)
함수를 하나 선언해주었습니다. 함수의 인자로 아까 발급받은 client_id와 secret을 입력하고 저희가 찾고싶은 키워드를 q 인자로 넣어줍니다.
그렇게 되면 반환값이 이미지 주소가 되게 됩니다.
한 번 "불" 이라는 키워드를 통해서 진행해보겠습니다.
extract_img(CLIENT_ID, CLIENT_SECRET, '불')
이라고 입력하면 다음과 같은 주소가 나타납니다.
들어가보면, 불 이미지가 나옴을 알 수 있습니다.
'Python' 카테고리의 다른 글
[파이썬/Python] 도커 이미지를 생성하고 배포해보자 (0) | 2023.08.24 |
---|---|
[Python/파이썬] 목소리와 음악을 구분하자 - 2편(with Resnet) (0) | 2023.08.01 |
[Python/파이썬] 목소리와 음악을 구분하자 - 1편(with Spleeter) (0) | 2023.07.25 |
[Python/파이썬] 스펙트로그램으로 노래의 구간을 찾아보자 (0) | 2023.07.20 |
[파이썬/Python] 유튜브 API를 사용하여 원하는 검색 결과 불러오기 (0) | 2023.07.02 |