일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 지정헌혈
- RNN
- 피플
- Computer Vision
- map
- pytorch
- 딥러닝
- 42서울
- mnist
- 모델
- 자연어처리
- 크롤러
- CV
- 42경산
- 선형회귀
- 앱개발
- 선형대수학
- 회귀
- AI
- filtering
- 코딩애플
- 머신러닝
- 인공지능
- 크롤링
- 플러터
- 파이썬
- 데이터분석
- Flutter
- Regression
- 유데미
Archives
- Today
- Total
David의 개발 이야기!
파파고API를 활용한 번역프로그램 만들기! 본문
반응형
파파고 API를 이용해 "코리아헤럴드"신문을 번역프로그램을 만들어보는 실습을 하였다.
[ 코리아 헤럴드 크롤링 코드 ]
keyword = input("영어로 키워드 입력 >> ")
page_num = 1
while True:
url = "http://www.koreaherald.com/search/index.php?q={}&sort=1&mode=list&np={}&mp=1".format(keyword, page_num)
code = req.urlopen(url)
soup = BeautifulSoup(code, "html.parser")
articles = soup.select("ul.main_sec_li > li > a")
if len(articles) == 0:
break
for i in articles:
title = i.select_one("div.main_l_t1")
print("제목 :", title.text)
link = "http://www.koreaherald.com" + i.attrs["href"]
code_news = req.urlopen(link)
soup_news = BeautifulSoup(code_news, "html.parser")
contents = soup_news.select_one("div#articleText")
# 데이터 가공 result 변수에 값이 저장된다!
result = re.sub(r'(\\[x]..)|(\\r)|(\\n)|(\\t)|(\(Yonhap\))', "", contents.text.strip())
# print(result)
# print()
[ 파파고 API를 이용해 번역하는 코드 ]
파파고 API를 이용하는 부분은, NAVER에서 어떻게 활용하라고 예제코드를 올려놓아서 활용하였다!
#API 문서에 5000개까지만 번역할 수 있게끔 해서 IF문 사용!
if len(result) > 5000:
result = result[0:5000]
api_id = "**************"
api_pw = "**************"
client_id = api_id # 개발자센터에서 발급받은 Client ID 값
client_secret = api_pw # 개발자센터에서 발급받은 Client Secret 값
encText = urllib.parse.quote(result)
#영어에서 한국어로 바꾸는 것이니 source=en&target=ko&text= 주의!
data = "source=en&target=ko&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()
result = response_body.decode('utf-8')
#print(result)
result_dict = json.loads(result) # json -> 딕셔너리
print(result_dict["message"]["result"]["translatedText"])
print()
else:
print("Error Code:" + rescode)
page_num += 1
중간에 주석에 #print(result) 가 있는데, 딕셔너리형태처럼 보이는 JSON형식 이 나온다!
따라서, JSON형식을 딕셔너리자료형으로 바꾸어주어야한다!
이때 이용하는 것이, json.load 이다!
요 부분은 아래에 다시 정리해두었다!
https://david-kim2028.tistory.com/5
[ 전체 코드 ]
import urllib.request as req
from bs4 import BeautifulSoup
import re
import os
import sys
import urllib.request
import json
keyword = input("영어로 키워드 입력 >> ")
page_num = 1
while True:
url = "http://www.koreaherald.com/search/index.php?q={}&sort=1&mode=list&np={}&mp=1".format(keyword, page_num)
code = req.urlopen(url)
soup = BeautifulSoup(code, "html.parser")
articles = soup.select("ul.main_sec_li > li > a")
if len(articles) == 0:
break
for i in articles:
title = i.select_one("div.main_l_t1")
print("제목 :", title.text)
link = "http://www.koreaherald.com" + i.attrs["href"]
code_news = req.urlopen(link)
soup_news = BeautifulSoup(code_news, "html.parser")
contents = soup_news.select_one("div#articleText")
# 데이터 가공
result = re.sub(r'(\\[x]..)|(\\r)|(\\n)|(\\t)|(\(Yonhap\))', "", contents.text.strip())
# print(result)
# print()
if len(result) > 5000:
result = result[0:5000]
api_id = "--------"
api_pw = "--------"
client_id = api_id # 개발자센터에서 발급받은 Client ID 값
client_secret = api_pw # 개발자센터에서 발급받은 Client Secret 값
encText = urllib.parse.quote(result)
data = "source=en&target=ko&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()
result = response_body.decode('utf-8')
result_dict = json.loads(result) # json -> 딕셔너리
print(result_dict["message"]["result"]["translatedText"])
print()
else:
print("Error Code:" + rescode)
page_num += 1
반응형
'크롤링 공부' 카테고리의 다른 글
웹 크롤러 개념 익히기[1] - 네이버 주식 현재가 크롤링 예제 (0) | 2023.05.02 |
---|---|
[ iframe 개념 이해하기 ] 다음카페 자동으로 글 게시하는 프로그램 만들기! (4) | 2021.12.16 |
인스타그램 자동 좋아요 누르기 프로그램 만들기! (1) | 2021.12.16 |
네이버 클로바 음성인식 API 활용 실습! (0) | 2021.12.15 |
json 에서 dictionary로 변환하는 방법! (0) | 2021.12.15 |
Comments