공공 빅데이터 청년 인턴십/Python

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

연디연디 2021. 11. 8. 19:36
728x90

 

네이버 API 신청하기

네이버 오픈 API를 사용하려면 NAVER Devlopers에 접속하여 오픈 API 신청을 해야 합니다.

 

 

NAVER Developers

네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음

developers.naver.com

NAVER Developers

네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다.

제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음성인식, 음성합성 등이 있습니다.

 

Product> 서비스 API> 데이터랩 에 들어가면 아래와 같이 API 신청을 할 수 있습니다.

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

아래의 페이지에 애플리케이션 이름, 사용 API는 "검색"으로, 서비스환경은 WEB 설정

URL은 예시에 나온 http:://naver.com로 설정을 해줍니다. 그리고 "등록하기"를 클릭해 줍니다.

이렇게 TEST_2의 이름을 가진 오픈 API가 만들어졌습니다. (이름은 자유롭게 설정해 주세요.) 이제 이 ID를 활용하여 API를 사용하여 보도록 합시다.

 

네이버 오픈 API 사용법

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

그러면 아래와 같이 블로그, 뉴스, 책, 영화 등등 API 사용 방법이 여러 프로그래밍 언어로 나와 있습니다.

위에서부터 스크롤 다운을 하여 내려보면 Python 예제가 보일 것입니다.

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

요청 변수, 출력결과 등의 설명이 있습니다. 꼭 읽어보도록 합시다.

아래는 예제 코드입니다.

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
31
32
33
34
35
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)
cs

 

위에 예제를 이용하여 "상암 맛집" 키워드와 관련된 블로그 내용을 JSON으로 받아와 봅시다.

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
31
32
33
34
35
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)
cs
 

[결과]

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

네이버 뉴스 예제도 한 번 봅시다.

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
31
32
33
34
35
36
37
38
39
import os
 
import sys
 
import urllib.request
 
client_id = "********************" #발급받은 id입력
 
client_secret = "**************" #발급받은 pw 입력
 
quote = input("검색어를 입력해 주세요: "#검색어 입력받기
 
num = input("검색 건수를 적어주세요(최대 100, 숫자만 입력): "#최대 검색건수
 
encText = urllib.parse.quote(quote) # 검색단어 입력
 
url = "https://openapi.naver.com/v1/search/news?query=" + encText + "&display=" + num # json 결과
 
# url = "https://openapi.naver.com/v1/search/news.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)
cs

 

[결과]

블로그 예제와의 차이는 url의 차이입니다. 다른 검색도 url을 바꾸어서 할 수 있으니 참고 바랍니다.

 

 

마무리

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

728x90