반응형
진행 중인 파이썬 프로젝트에서 내가 맡은 파트는 경제 뉴스 기능이다.
네이버 API 중 검색/뉴스 API를 활용하여 주식 관련 뉴스를 수집하고 화면에 보여줄 것이다.
네이버 검색>뉴스 API 관련 내용
https://developers.naver.com/docs/serviceapi/search/news/news.md#%EB%89%B4%EC%8A%A4
요청 URL
요청 파라미터
검색어에 해당하는 'query' 파라미터만 필수이고 나머지는 선택이다.
1. 검색 API 신청, client ID, client Secret 발급
2. API 관련 비밀번호는 노출되면 안 되니까 config.json 파일에 작성하여 관리하고 .gitignore에 추가한다.
이런 식으로 작성하고
{
"NAVERAPI": {
"CLIENT_ID": "네이버 클라이언트 ID",
"CLIENT_SECRET": "네이버 클라이언트 Secret"
},
"DB": {
"username": "오라클 username",
"password": "오라클 password",
"dsn": "stockping_high"
}
}
불러올 때에는 파이썬 코드에 아래와 같이 불러오면 된다.
with open('config.json 경로', 'r') as f: //r : 읽어오겠다.
config = json.load(f)
db_info = config['DB']
3. 코드 작성
네이버 검색 API 사용 시에는 무조건!! request.add_header를 사용해서 client ID, client Secret을 담아서 요청해야 한다.
def get_request_url(url):
request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",api_info['client_id'])
request.add_header("X-Naver-Client-Secret",api_info['client_secret'])
try:
response = urllib.request.urlopen(request) # 정보 추출
if response.getcode() == 200: # OK(성공)
print("[%s] Url Response Success" % datetime.datetime.now())
response_body = response.read()
news_list = response_body.decode('utf-8') # 추출한 정보가 담겨져 있음
print(news_list)
return news_list
except Exception as e:
print(e)
print("[%s] Error for URL : %s" % (datetime.datetime.now(), url))
return None
검색어는 '주식', json 형식으로 리턴하겠다.
def getNaverSearchResult(sNode, search_text, page_start, display):
base = "https://openapi.naver.com/v1/search"
node = "/%s.json" % sNode
parameters = "?query=%s&start=%s&display=%s" % (urllib.parse.quote(search_text), page_start, display)
url = base + node + parameters
retData = get_request_url(url)
if(retData == None):
return None
else:
# print(retData)
return json.loads(str(retData)) # JSON 형식으로 리턴
....
sNode = 'news'
search_text = '주식'
display_count = 100
실행하면 아래와 같이 JSON 형식으로 불러오기 성공!
반응형
'💻 my code archive > 📘Python' 카테고리의 다른 글
[Stockping #5] 파이썬 Blueprint 사용법, Flask 플라스크 모듈화 (0) | 2022.12.21 |
---|---|
[Stockping #4] Python 파이썬 BeautifulSoup 실시간 코스피, 코스닥 네이버 금융 웹 크롤링 (0) | 2022.11.17 |
[Stockping #3] Python 파이썬 DB 데이터 SELECT, Flask 화면 뿌리기 (0) | 2022.11.17 |
[Stockping #2] 수집한 뉴스 데이터 Oracle DB 저장(INSERT), 파이썬 오라클 연동, 오라클 19c 설치 (0) | 2022.11.08 |