{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 데이터를 API로 가져와 본다 - 네이버"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"먼저 다음과 같은 절차로 API 사용을 신청/등록한다.
\n",
"\n",
"1. 먼저 다음 사이트에 접속한다: https://developers.naver.com/main/\n",
"2. 사이트에 가입하고 로그인 한다.\n",
"3. 상단 탭에서: Application => 애플리케이션 등록으로 들어간다\n",
"4. 이용약관에 동의하고 확인한다.\n",
"5. \"활용신청\" 버튼을 클릭하고 신청 양식을 작성한다.\n",
"6. 휴대폰 인증 절차를 거치고 넘어간다 (MS Explorer 사용).\n",
"7. 애플리케이션을 등록한다.\n",
" - 애플리케이션 이름은 \"Test\"로.\n",
" - 사용 API는 \"검색\"으로.(검색말고도 다른거 사용할 수 있음)\n",
" - 비로그인 오픈 API 서비스환경은 \"Android 설정\"으로.\n",
" - 앤드로이드 앱 패키지 이름은 \"com.test\"로.\n",
"6. \"등록\" 버튼을 클릭해서 등록 완료. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"등록이 완료된 후 API 토큰과 API 시크릿을 받아 두어야만 한다.
\n",
" \n",
"1. API 토큰은 바로 \"Client ID\"이고,\n",
"2. API 시크릿은 \"Client Secret\"이다. 아래 [보기] 버튼을 눌러서 볼수 있다.\n",
"3. 이들을 복사해 놓는다.\n",
"4. 이 내용을 다시 보려면 상단 탭에서: Application => 내 애플리케이션 => 왼쪽 사이드 메뉴 상단에서 애플리케이션 이름 \"Test\"를 클릭한다."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1. 키워드 사용 네이버 검색"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import requests as rq\n",
"import json"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"api_token = \"MGy6CWcNo2BB6nJgmhTm\" # 각자 본인의 것으로 대체한다.\n",
"api_secret = \"p15jEaoZY4\" # 각자 본인의 것으로 대체한다."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# 검색 키워드.\n",
"my_keyword = \"아시아경제\""
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'https://openapi.naver.com/v1/search/blog?query=아시아경제'"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"url = \"https://openapi.naver.com/v1/search/blog?query=\" + my_keyword \n",
"url"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"# 헤더에 나의 api_token과 api_secret을 태워서 보낸다. \n",
"my_headers = {\"X-Naver-Client-Id\":api_token, \"X-Naver-Client-Secret\":api_secret}"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Status = 200\n"
]
}
],
"source": [
"# 데이터를 요청하고 상태를 본다.\n",
"res = rq.get(url, headers=my_headers) #url과 헤더 가져옴\n",
"print(\"Status = \" + str(res.status_code)) #status = 200으로 출력해보기 위해 문자결합"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 파싱하기"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'lastBuildDate': 'Sun, 19 Jan 2020 20:09:00 +0900',\n",
" 'total': 1152736,\n",
" 'start': 1,\n",
" 'display': 10,\n",
" 'items': [{'title': '쉐보레 트랙스로 아시아경제 연비왕대회 참가했어요',\n",
" 'link': 'https://blog.naver.com/uni1978?Redirect=Log&logNo=221710295145',\n",
" 'description': '지난번에 아시아경제 연비왕대회에 참가 신청을 했다는 글을 썼어요. 쉐보레 트랙스로 아시아경제 주관 연비왕대회 참가 신청 완료 이전 글에서 쓴 것과 같이 쉐보레 트랙스를 운전하기 시작한지 이제... ',\n",
" 'bloggername': '호기심 만발한 밤송씨',\n",
" 'bloggerlink': 'https://blog.naver.com/uni1978',\n",
" 'postdate': '20191117'},\n",
" {'title': '[관악구 국회의원 김성식] [아시아경제]김성식, 선거법 표결에... ',\n",
" 'link': 'https://blog.naver.com/okkimss?Redirect=Log&logNo=221753844092',\n",
" 'description': '“연동형의 원칙 짓밟혀…아닌 것은 아닌 것” [이미지출처=연합뉴스] [아시아경제 임춘한 기자]... 김 의원은 “정치, 경제, 사회, 교육 등 각 분야별 제도와 시스템을 개선하여 저성장, 양극화, 외교안보적... ',\n",
" 'bloggername': '관악구 국회의원 김성식의 꿈.일.사람이야기',\n",
" 'bloggerlink': 'https://blog.naver.com/okkimss',\n",
" 'postdate': '20191230'},\n",
" {'title': '[연합뉴스]와 [아시아경제] 기사 중에서',\n",
" 'link': 'https://blog.naver.com/s3939?Redirect=Log&logNo=221761941461',\n",
" 'description': '[아시아경제] 기사 중에서 애플, 스마트폰 영업이익 66% 쓸어담아..삼성은 17% 한진주 입력 2019.12.20. 09... 증가 [아시아경제 한진주 기자] 애플이 3분기 글로벌 스마트폰 판매 이익의 66%를 쓸어담은 것으로... ',\n",
" 'bloggername': '철인(s3939)',\n",
" 'bloggerlink': 'https://blog.naver.com/s3939',\n",
" 'postdate': '20200106'},\n",
" {'title': '{제8회 아시아경제 직장인밴드 대회}시상식',\n",
" 'link': 'https://blog.naver.com/battlcar?Redirect=Log&logNo=221284829125',\n",
" 'description': '지난 2017년 8월17일 오후 5시부터 저녁 8시까지 여의도 물빛무대에서 열린 {제8회 아시아경제... 사이에 아시아경제 심사위원들의 심사가 어느새 끝나 있었다. 그리고 드디어 대망의 피날레를 장식하는... ',\n",
" 'bloggername': '푸른 매화',\n",
" 'bloggerlink': 'https://blog.naver.com/battlcar',\n",
" 'postdate': '20180526'},\n",
" {'title': '전국 1위 도시에 걸맞는 혁신 정책 지속" [아시아경제]',\n",
" 'link': 'https://blog.naver.com/cwonoh?Redirect=Log&logNo=221772437021',\n",
" 'description': '성동구청장은 아시아경제와 가진 인터뷰에서 ‘더불어 행복한 스마트 포용도시’를 속도감 있게... 정원오 성동구청장은 아시아 news.naver.com #정원오 #성동구 #성동구청장 #포용도시 #스마트시티 #스마트포용도시',\n",
" 'bloggername': '정원오 성동구청장',\n",
" 'bloggerlink': 'https://blog.naver.com/cwonoh',\n",
" 'postdate': '20200115'},\n",
" {'title': '베팅할 줄 알아야 (출처: 아시아경제 / 2019.09.17)',\n",
" 'link': 'https://blog.naver.com/min_insa?Redirect=Log&logNo=221653959614',\n",
" 'description': \"https://news.naver.com/main/read.nhn?mode=LSD&mid=sec&oid=277&aid=0004537575&sid1=001&fbclid=IwAR20WIfFmTSLnzLXIxSS8t-h4C1yb-56R9bc3dbQXz6dwq1kC-0wbsDDk5Y 거장은 '장기·역발상' 투자…비인기종목에도 베팅할 줄 알아야 [아시아경제 문채석... \",\n",
" 'bloggername': '나의 생각을 이야기하다...',\n",
" 'bloggerlink': 'https://blog.naver.com/min_insa',\n",
" 'postdate': '20190920'},\n",
" {'title': '정책엔 한국 현실 안 담겼다" (아시아경제, 2020.01.06)',\n",
" 'link': 'https://blog.naver.com/moonjinforum?Redirect=Log&logNo=221762405445',\n",
" 'description': '아시아경제, 2020.01.06) 이덕환 에교협 공동대표 "대안 안될 태양광만 밀어붙여 탈석탄으로 미세먼지 저감? LNG 초미세먼지 늘려 모순"이덕환 서강대 화학·과학커뮤니케이션 명예교수가 3일 아시아경제와... ',\n",
" 'bloggername': '문진(問津)으로 여는 탄소문화의 시대',\n",
" 'bloggerlink': 'https://blog.naver.com/moonjinforum',\n",
" 'postdate': '20200107'},\n",
" {'title': '[아시아경제] 서형수 알서포트 대표 "내년 중국 공략 본격화"',\n",
" 'link': 'https://blog.naver.com/rsupport?Redirect=Log&logNo=221719928915',\n",
" 'description': '" 서형수 알서포트 대표(사진)는 27일 아시아경제와 한 인터뷰에서 아시아 시장에서 꾸준한 성장이 가능하다며 장기 성장에 대한 자신감을 내비쳤다. 2001년 설립된 알서포트는 클라우드 기반 원격지원 및... ',\n",
" 'bloggername': '알서포트 공식 블로그',\n",
" 'bloggerlink': 'https://blog.naver.com/rsupport',\n",
" 'postdate': '20191127'},\n",
" {'title': \"규제 위에 개발 호재...'삼.마. 청.용' 잡아라<아시아경제>\",\n",
" 'link': 'https://blog.naver.com/az7286?Redirect=Log&logNo=221759506936',\n",
" 'description': '사례 <아시아경제> 정부의 고강도 투기억제 정책으로 서울 강남권 집값 상승세가 주춤하는... 도시재생 뉴딜사업은 문재인 정부의 주요 국정 과제 중 하나로 낙후된 지역의 산업기반을 회복시켜 경제... ',\n",
" 'bloggername': '즐거운♡부동산이야기',\n",
" 'bloggerlink': 'https://blog.naver.com/az7286',\n",
" 'postdate': '20200105'},\n",
" {'title': \"책 한 끼]'늑대들'의 놀이터, 핀란드·에스토니아 - by 아시아경제>\",\n",
" 'link': 'https://blog.naver.com/daeshy1?Redirect=Log&logNo=221775220963',\n",
" 'description': '노키아가 2011년 핀란드 경제에 미친 영향은 말 그대로 막대하다. 국내총생산(GDP)의 4%를 책임지고 수출의 25%를 짊어졌다. 2013년 노키아가 망하자 핀란드의 경제성장률은 마이너스 0.76%로 곤두박질쳤다.... ',\n",
" 'bloggername': '대탐소실님의 블로그',\n",
" 'bloggerlink': 'https://blog.naver.com/daeshy1',\n",
" 'postdate': '20200117'}]}"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# JSON으로 내려받은 정보를 parsing한다.\n",
"my_json = json.loads(res.text) #블로그에서 가져온다 => 아시아경제 제목으로 블로그검색한 결과나옴\n",
"my_json"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys(['lastBuildDate', 'total', 'start', 'display', 'items'])"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Key 값 출력.\n",
"my_json.keys() #우리는 아이템에 관심"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Title : 쉐보레 트랙스로 아시아경제 연비왕대회 참가했어요\n",
"Link : https://blog.naver.com/uni1978?Redirect=Log&logNo=221710295145\n",
"Description : 지난번에 아시아경제 연비왕대회에 참가 신청을 했다는 글을 썼어요. 쉐보레 트랙스로 아시아경제 주관 연비왕대회 참가 신청 완료 이전 글에서 쓴 것과 같이 쉐보레 트랙스를 운전하기 시작한지 이제... \n",
"\n",
"Title : [관악구 국회의원 김성식] [아시아경제]김성식, 선거법 표결에... \n",
"Link : https://blog.naver.com/okkimss?Redirect=Log&logNo=221753844092\n",
"Description : “연동형의 원칙 짓밟혀…아닌 것은 아닌 것” [이미지출처=연합뉴스] [아시아경제 임춘한 기자]... 김 의원은 “정치, 경제, 사회, 교육 등 각 분야별 제도와 시스템을 개선하여 저성장, 양극화, 외교안보적... \n",
"\n",
"Title : [연합뉴스]와 [아시아경제] 기사 중에서\n",
"Link : https://blog.naver.com/s3939?Redirect=Log&logNo=221761941461\n",
"Description : [아시아경제] 기사 중에서 애플, 스마트폰 영업이익 66% 쓸어담아..삼성은 17% 한진주 입력 2019.12.20. 09... 증가 [아시아경제 한진주 기자] 애플이 3분기 글로벌 스마트폰 판매 이익의 66%를 쓸어담은 것으로... \n",
"\n",
"Title : {제8회 아시아경제 직장인밴드 대회}시상식\n",
"Link : https://blog.naver.com/battlcar?Redirect=Log&logNo=221284829125\n",
"Description : 지난 2017년 8월17일 오후 5시부터 저녁 8시까지 여의도 물빛무대에서 열린 {제8회 아시아경제... 사이에 아시아경제 심사위원들의 심사가 어느새 끝나 있었다. 그리고 드디어 대망의 피날레를 장식하는... \n",
"\n",
"Title : 전국 1위 도시에 걸맞는 혁신 정책 지속" [아시아경제]\n",
"Link : https://blog.naver.com/cwonoh?Redirect=Log&logNo=221772437021\n",
"Description : 성동구청장은 아시아경제와 가진 인터뷰에서 ‘더불어 행복한 스마트 포용도시’를 속도감 있게... 정원오 성동구청장은 아시아 news.naver.com #정원오 #성동구 #성동구청장 #포용도시 #스마트시티 #스마트포용도시\n",
"\n",
"Title : 베팅할 줄 알아야 (출처: 아시아경제 / 2019.09.17)\n",
"Link : https://blog.naver.com/min_insa?Redirect=Log&logNo=221653959614\n",
"Description : https://news.naver.com/main/read.nhn?mode=LSD&mid=sec&oid=277&aid=0004537575&sid1=001&fbclid=IwAR20WIfFmTSLnzLXIxSS8t-h4C1yb-56R9bc3dbQXz6dwq1kC-0wbsDDk5Y 거장은 '장기·역발상' 투자…비인기종목에도 베팅할 줄 알아야 [아시아경제 문채석... \n",
"\n",
"Title : 정책엔 한국 현실 안 담겼다" (아시아경제, 2020.01.06)\n",
"Link : https://blog.naver.com/moonjinforum?Redirect=Log&logNo=221762405445\n",
"Description : 아시아경제, 2020.01.06) 이덕환 에교협 공동대표 "대안 안될 태양광만 밀어붙여 탈석탄으로 미세먼지 저감? LNG 초미세먼지 늘려 모순"이덕환 서강대 화학·과학커뮤니케이션 명예교수가 3일 아시아경제와... \n",
"\n",
"Title : [아시아경제] 서형수 알서포트 대표 "내년 중국 공략 본격화"\n",
"Link : https://blog.naver.com/rsupport?Redirect=Log&logNo=221719928915\n",
"Description : " 서형수 알서포트 대표(사진)는 27일 아시아경제와 한 인터뷰에서 아시아 시장에서 꾸준한 성장이 가능하다며 장기 성장에 대한 자신감을 내비쳤다. 2001년 설립된 알서포트는 클라우드 기반 원격지원 및... \n",
"\n",
"Title : 규제 위에 개발 호재...'삼.마. 청.용' 잡아라<아시아경제>\n",
"Link : https://blog.naver.com/az7286?Redirect=Log&logNo=221759506936\n",
"Description : 사례 <아시아경제> 정부의 고강도 투기억제 정책으로 서울 강남권 집값 상승세가 주춤하는... 도시재생 뉴딜사업은 문재인 정부의 주요 국정 과제 중 하나로 낙후된 지역의 산업기반을 회복시켜 경제... \n",
"\n",
"Title : 책 한 끼]'늑대들'의 놀이터, 핀란드·에스토니아 - by 아시아경제>\n",
"Link : https://blog.naver.com/daeshy1?Redirect=Log&logNo=221775220963\n",
"Description : 노키아가 2011년 핀란드 경제에 미친 영향은 말 그대로 막대하다. 국내총생산(GDP)의 4%를 책임지고 수출의 25%를 짊어졌다. 2013년 노키아가 망하자 핀란드의 경제성장률은 마이너스 0.76%로 곤두박질쳤다.... \n",
"\n"
]
}
],
"source": [
"# 검색 결과 아이템들을 출력해 본다. \n",
"for x in my_json['items']: #아이템의 타이틀키,링크키,디스크립키\n",
" print(\"Title : \" + x.get('title')) #Title : 제목형태로 나오게 문자열 결합\n",
" print(\"Link : \" + x.get('link'))\n",
" print(\"Description : \" + x.get('description'))\n",
" print()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}