[Python] 파이썬 기초_API 사용

youuu·2022년 12월 7일
0

Python

목록 보기
7/8

네이버 api

방법

  1. 네이버 로그인 -> Products -> API 이용 안내->API 소개->서비스 API->Open API 이용신청



개발메뉴얼은 개발시 도움말같은 페이지이다. 들어가 보면 파이썬에서 사용하는 방법을 찾을 수 있다.


# 네이버 검색 API 예제 - 블로그 검색
import os
import sys
import urllib.request
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
encText = urllib.parse.quote("검색할 단어")
url = "https://openapi.naver.com/v1/search/blog?query=" + encText # JSON 결과
# url = "https://openapi.naver.com/v1/search/blog.xml?query=" + encText # XML 결과
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()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)


JSON 링크

🥞 검색 API _ json사용 내용 뽑기.

📋 openApi02.py

# Open API
# ① http://developers.naver.com 싸이트 이동
# ② Naver API 사용 위해 Application 등록 수행
# ③ 사용 API에서 검색 서비스 선택(get / post 방식)
# ④ 파이썬 검색어로 검색하여 결과 JSON 확인

# 네이버 검색 API예제는 블로그를 비롯 전문자료까지 호출방법이 동일하므로 blog검색만 대표로 예제
# 네이버 검색 Open API 예제 - 블로그 검색

import requests
headers = {
    'X-Naver-Client-Id': '--- 아이디  ---' ,
    'X-Naver-Client-Secret': '--- 비밀번호 ---' ,
}

payLoad = {
    'query' : '스프링',
    'display' : 100,
}

url = 'https://openapi.naver.com/v1/search/blog'

res = requests.get(url, headers=headers, params=payLoad)

print('request sended ...')
# 응답이 json형태로 오기로 되어있음
print(res.json())

# json Web Viewer -> jsonviewer.stock.hu

result = res.json()['items'][3]['title']
print('result 3번쨰 title만 가져옴')
print(result)

🥞 번역 API _ json사용 내용 뽑기.

📋 openApi03.py

# Open API
# ① http://developers.naver.com 싸이트 이동
# ② Naver API 사용 위해 Application 등록 수행
# ③ 사용 API에서 검색 서비스 선택(get / post 방식)
# ④ 파이썬 검색어로 검색하여 결과 JSON 확인

# 네이버 검색 API예제는 블로그를 비롯 전문자료까지 호출방법이 동일하므로 blog검색만 대표로 예제
# 네이버 검색 Open API 예제 - 블로그 검색
# # 파파고 SMT API 예제

from    requests import Request     # 모듈로 부터 특정 클래스만 import
from    requests import Session

s = Session()

headers = {
    'X-Naver-Client-Id': '--- 아이디  ---' ,
    'X-Naver-Client-Secret': '--- 비밀번호 ---' ,
}
text = "Yesterday all my troubles seemed so far away"

payLoad = {
    'source' : 'en',
    'target' : 'ko',
    'text'   : text
}

# 문장 번역 URL 저장
url = "https://openapi.naver.com/v1/papago/n2mt"
req = Request('POST', url, data=payLoad, headers=headers)

# 미리 내부적으로 Compile
prepared = req.prepare()

# Session 객체를 통해 전송
res = s.send(prepared)
# online jsonviewer --> jsonviewer.stack.hu

print("res.json()->", res.json())
result = res.json()['message']['result']['translatedText']
print("result -> ", result)


print("res.json()-> ", res.json())

C:\python\pySources\basic01\venv\Scripts\python.exe C:/python/pySources/basic01/ch20/openApi03.py
res.json()-> {'message': {'result': {'srcLangType': 'en', 'tarLangType': 'ko', 'translatedText': '어제 나의 모든 문제들은 너무 멀리 있는 것처럼 보였다.', 'engineType': 'N2MT', 'pivot': None, 'dict': None, 'tarDict': None}, '@type': 'response', '@service': 'naverservice.nmt.proxy', '@version': '1.0.0'}}
result ->  어제 나의 모든 문제들은 너무 멀리 있는 것처럼 보였다.
res.json()->  {'message': {'result': {'srcLangType': 'en', 'tarLangType': 'ko', 'translatedText': '어제 나의 모든 문제들은 너무 멀리 있는 것처럼 보였다.', 'engineType': 'N2MT', 'pivot': None, 'dict': None, 'tarDict': None}, '@type': 'response', '@service': 'naverservice.nmt.proxy', '@version': '1.0.0'}}

Process finished with exit code 0

🥞 번역 API _ 영->한 번역

📋 openApi04.py

# Yesterday.txt를 읽어 해석하는 PGM
# 네이버 검색 Open API 예제 - 블로그 검색
# 파파고 SMT API 예제
# 과제 : 1) Yesterday.txt 파일을 읽기
#        2) 한 라인씩 읽고 원문 한라인, 해석된 한 라인 씩
#           전체문장을 해석 YesterdayTrans.txt에 저장

from requests import Request
from requests import Session

s = Session()

# ID와 비밀 KEY 세팅
headers = {
    'X-Naver-Client-Id': '--- 아이디  ---' ,
    'X-Naver-Client-Secret': '--- 비밀번호 ---' ,
}
url = "https://openapi.naver.com/v1/papago/n2mt"

#문장 번역 누적 변수
totalText = ''
with open('Yesterday.txt', 'r') as readFile:
    sourceText = 'Start...'     #초기화된 값을 설정, 일단 시작할수 있도록..

    while sourceText !='':
        # print(line, end='')
        sourceText = readFile.readline()
        #dict Type
        payLoad = {
            'source' : 'en',
            'target' : 'ko',
            'text' : sourceText,
        }

        req = Request('POST', url, data=payLoad, headers=headers)
        # 미리 내부적으로 Compile
        prepared = req.prepare()
        # Sessoin 객체를 통해 전송
        res = s.send(prepared)

        # online jsonviewer --> jsonviewer.stack.hu
        print("res.json()->", res.json())

        try:
            transText = res.json()['message']['result']['translatedText']
        except:
            transText = '종료'
            break
        totalText = totalText + '\n' + sourceText + transText + '\n'

    with open('Yesterday.txt', 'w', encoding='utf-8') as writeFile:
        writeFile.write(totalText)
        readFile.close()
        writeFile.close()

print("totalText ->", totalText)

profile
공부중인 주니어 개발자

0개의 댓글