Crawling

[python] Naver 오픈API를 이용하여 크롤링 하기(뉴스/블로그/카페)

wonhwa 2021. 10. 5. 10:53
반응형
네이버 API 신청하기

네이버 오픈 API를 사용하려면 NAVER Devlopers에 접속하여 오픈 API 신청을 해야 한다.
Product> 서비스 API> 데이터랩 에 들어가면 아래와 같이 API 신청을 할 수 있다.

하단의 "오픈 API 신청"을 누르면 나타나는 아래의 화면에서 "Application 등록"을 클릭한다.

아래의 페이지에 애플리케이션 이름, 사용 API는 "검색"으로, 서비스환경은 WEB 설정
URL은 http://localhost로 설정을 해준다. (예시에 나온 http:://naver.com을 써도 무방하다.) 그리고 "등록하기"를 클릭해준다.

이렇게 TEST_2의 이름을 가진 오픈 API가 만들어졌다. 이제 이 ID를 활용하여 API를 사용하여 보자.

 

네이버 오픈 API 사용법

발급받은 오픈 API를 사용하기 위해서 Documents>검색 을 클릭한다.

그러면 아래와 같이 블로그, 뉴스, 책, 영화 등등 API 사용 방법이 여러 프로그래밍 언어로 나와 있다.
위에서부터 스크롤 다운을 하여 내려보면 Python 예제가 보일 것이다.

이 상태에서 스크롤 다운을 하여 아래로 더 내려보면

요청 변수, 출력결과 등의 설명이 있으니 꼭 읽어보도록 하자.

아래는 예제 코드이다.

# 네이버 검색 API예제는 블로그를 비롯 전문자료까지 호출방법이 동일하므로 blog검색만 대표로 예제를 올렸습니다.
# 네이버 검색 Open 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으로 받아와보자.

import os
import sys
import urllib.request
client_id = "******************" #발급받은 ID 입력
client_secret = "**************" #발급받은 PW 입력
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)

결과

위와 같이 결과를 확인 할 수 있다.

마무리

블로그 뿐만이 아니라 뉴스 , 카페글 등 네이버 오픈 API를 통해 관련 검색 글을 간편하게 불러올 수 있으니 많이 활용하기 바란다.

반응형