Coding/BigData_Python
Naver 크롤링 : 파파고 python + 도서 API
잉_민
2022. 3. 14. 21:56
728x90
반응형
라즈베리파이 LCD가 영어밖에 프린트가 안 되서 파파고로 번역기 돌리는 코드를 추가했다.
import csv
import drivers
# import I2C_LCD_driver
from time import sleep
import os
import sys
import urllib.request
import json
#naver api
CLIENT_ID = '북여기에 본인거'
CLIENT_SECRET = '북여기에본인거'
#LCD display
display = drivers.Lcd()
# display = I2C_LCD_driver.lcd()
#request
def search_book(query):
from urllib.request import Request, urlopen
from urllib.parse import urlencode, quote
import json
# request = Request('https://openapi.naver.com/v1/search/book?query='+quote(query))
#isbn
request = Request('https://openapi.naver.com/v1/search/book_adv?d_isbn='+quote(query))
request.add_header('X-Naver-Client-Id', CLIENT_ID)
request.add_header('X-Naver-Client-Secret', CLIENT_SECRET)
response = urlopen(request).read().decode('utf-8')
search_result = json.loads(response)
return search_result
def papago(book):
client_id = "파파고 본인거" # 개발자센터에서 발급받은 Client ID 값
client_secret = "파파고본인거" # 개발자센터에서 발급받은 Client Secret 값
encText = urllib.parse.quote(book)
data = "source=ko&target=en&text=" + encText
url = "https://openapi.naver.com/v1/papago/n2mt"
request1 = urllib.request.Request(url)
request1.add_header("X-Naver-Client-Id",client_id)
request1.add_header("X-Naver-Client-Secret",client_secret)
response1 = urllib.request.urlopen(request1, data=data.encode("utf-8"))
rescode = response1.getcode()
if(rescode==200):
response_body = response1.read()
#json 형 변환
res = json.loads(response_body.decode('utf-8'))
print(res['message']['result']['translatedText'])
return res['message']['result']['translatedText']
else:
print("Error Code:" + rescode)
if __name__ == "__main__":
#csv first line only
f = open('barcodes.csv', 'r', encoding='utf-8')
rdr = csv.reader(f)
for line in rdr:
#search
print(line[1])
books = search_book(line[1])['items']
#erro
if(books == None):
print("fail")
exit()
#print
for book in books:
print("title: " + book['title'])
print("price: "+book["price"]+"won")
title = book['title']
price = book["price"]+"won"
papares= papago(title)
try:
while True:
# Remember that your sentences can only be 16 characters long!
print("Writing to display")
display.lcd_display_string(papares, 1) # Write line of text to first line of display
display.lcd_display_string(book["price"]+"won", 2) # Write line of text to second line of display
sleep(6) # Give time for the message to be read
display.lcd_clear() # Clear the display of any data
sleep(2) # Give time for the message to be read
except KeyboardInterrupt:
# If there is a KeyboardInterrupt (when you press ctrl+c), exit the program and cleanup
print("Cleaning up!")
display.lcd_clear()
f.close()
{"message":{"result":{"srcLangType":"ko","tarLangType":"en","translatedText":"OpenCV4 programming using C# and Python (from basic computer vision theory to video processing projects using machine learning)","engineType":"N2MT","pivot":null,"dict":null,"tarDict":null,"modelVer":"Unknown"},"@type":"response","@service":"naverservice.nmt.proxy","@version":"1.0.0"}}
값이 {} 오브젝트에 들어있을 때 원하는 값만 가져오는게 어렵다.
response_body = response1.read()
#json 형 변환
res = json.loads(response_body.decode('utf-8'))
print(res['message']['result']['translatedText'])
return res['message']['result']['translatedT']
res['message']['result']['translatedText']
번역된 translatedText만 잘불러와진다.
728x90
반응형