본문 바로가기
[python]데이터 분석/[python]웹 스크랩핑(scraping)

[python] 파파고 API를 이용한 간단한 번역기 만들기

by 코드몽규 2022. 1. 30.
반응형

이번에는 파파고 API를 이용해서 간단한 번역기를 만들어보려고 한다. 

 

그렇기 위해서는 먼저 아래 사이트에서 파파고 API를 사용할 수 있는 권한을 얻어야한다.

https://developers.naver.com/main/

 

NAVER Developers

네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음

developers.naver.com

가입후 Open API들 중에서 파파고 API 사용 신청을 하면 해당 API를 사용할 수 있는 요청 URL을 얻을 수 있다.

사용 과정에서 client_id 와 secret을 부여받는데  해당 API를 사용할때 꼭 필요하니 잘 적어두자.

 


위의 과정을 통해 Papago 번역 구현예제에서 다음과 같은 Python용 API구현예제를 얻을 수 있다.

import os
import sys
import urllib.request
client_id = "YOUR_CLIENT_ID" # 개발자센터에서 발급받은 Client ID 값
client_secret = "YOUR_CLIENT_SECRET" # 개발자센터에서 발급받은 Client Secret 값
encText = urllib.parse.quote("반갑습니다")
data = "source=ko&target=en&text=" + encText
url = "https://openapi.naver.com/v1/papago/n2mt"
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, data=data.encode("utf-8"))
rescode = response.getcode()
if(rescode==200):
    response_body = response.read()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)

 

client_id/client_secret에 해당하는 본인 정보를 적고 실행하면 

"translatedText":"Nice to meet you."

 "반갑습니다"가 "Nice to meet you."로 바르게 해석된 것을 볼 수 있다.


간단한 문장 말고 원하는 txt파일 전체를 번역하고 싶다면?

 

import requests


client_id = "2" # 개발자센터에서 발급받은 Client ID 값
client_secret = "3" # 개발자센터에서 발급받은 Client Secret 값
url = "https://openapi.naver.com/v1/papago/n2mt"

with open('halo.txt', 'r') as lyric:
    data = lyric.read()
    # print(data)

#요청 헤더
req_header = {"X-Naver-Client-Id":client_id, "X-Naver-Client-Secret":client_secret}
#요청 파라미터
req_param = {"source":"en", "target":"ko", "text":data}
#print(req_param)

res = requests.post(url,headers=req_header, data=req_param)

#print(res.status_code, res.ok)

if res.ok:
    print(type(res.text),res.text)
    print(type(res.json()),res.json())
    trans_txt=res.json()['message']['result']['translatedText']
    print(trans_txt)
else:
    print('error code', res.status_code)

 

 

반응형

댓글