본문 바로가기

API

[네이버 개발자센터 API] 검색 블로그 데이터 가져오기(파이썬)

반응형

파이썬으로 네이버 개발자센터 API의 검색 > 블로그 데이터를 가져오는 방법을 알아보겠습니다.

 

1. 네이버 개발자센터 API이용신청

2. client_id, client_secret 확인

3. 예제 코드 실행 및 결과확인

4. 예제 코드의 응용

 

1. 네이버 개발자센터 API이용신청

네이버 API를 이용하기 위해서는 가입 및 이용신청이 되어 있어야 합니다.

https://yenpa.tistory.com/2

 

[네이버 개발자센터 API] API 이용신청 및 Application 등록방법

네이버 개발자센터에서 API 이용신청 및 Application을 등록하는 방법을 알아보겠습니다. 1. 사이트접속 2. 로그인 3. API 이용신청 및 Application 등록 4. 등록정보확인 1. 사이트 접속 아래의 네이버 개

yenpa.tistory.com

 

2. client_id, client_secret확인

사이트 내에서 Products > 검색을 클릭합니다.

하단의 오픈 API 이용 신청으로 이동합니다.

아래의 순서로 클릭하면 본인의 client_id 및 client_secret의 확인이 가능합니다.

파이썬의 예제코드 실행을 위해 메모를 해둡니다.

 

 

3. 예제 코드 실행 및 결과확인

사이트 내에서 Products > 검색을 클릭합니다.

 

하단의 개발 가이드 보기를 클릭합니다.

파이썬으로 결과를 불러오기 위해 아래의 내용을 찾습니다.

내용중 변경할 부분은 client_id, client_secret, encText 이 세곳 입니다.

Python 

# 네이버 검색 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)

아나콘다에서 검색어 "경복궁"으로 실행한 결과가 되겠습니다.

 

response_body의 Type을 보시면 bytes인데 

json.load(response_body) 로 받으시면 dict 형태로 변환이 되어 파이썬내에서 활용하기가 좋습니다.

4. 예제코드의 응용

목표 : 검색어 "경복궁"으로 검색된 200개의 데이터("items")를 DataFrame에 저장.

입력 파라메터를 확인해보면

    display : 한번에 표시되는 최대 수는 100개(기본값 10, 최댓값 100)

    start : 검색시작위치 1(기본값 1, 최댓값 100)

입니다.

 

200개의 데이터를 가져오기 위해서는 

   start 1에서 display 100개,

   start 101에서 display 100개

를 불러와야 200개의 데이터가 수집됩니다.

 

getresult라는 함수로 만들었습니다.

import os
import sys
import urllib.request
import json
import pandas as pd

def getresult(client_id,client_secret,query,display=10,start=1,sort='sim'):
    encText = urllib.parse.quote(query)
    url = "https://openapi.naver.com/v1/search/blog?query=" + encText + \
    "&display=" + str(display) + "&start=" + str(start) + "&sort=" + sort

    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()
        response_json = json.loads(response_body)
    else:
        print("Error Code:" + rescode)

    return pd.DataFrame(response_json['items'])

예제에서 추가 변경된 부분은

  url : display, start 의 파라메터 설정을 위해 변경

  pd.DataFrame(response_json['items']) : 결과에서 'items' 부분만 DataFrame으로 변환

                                             'items'에 주요내용(title,link,description,bloggername,bloggerlink)가 포함되어있음

입니다.

 

 

함수를 호출하는 부분이 되겠습니다.(client_id와 client_secret은 본인의 데이터 입력 필요)

client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
query = '경복궁'
display=100
start=1
sort='sim'

result_all=pd.DataFrame()
for i in range(0,2):
    start= 1 + 100*i
    result= getresult(client_id,client_secret,query,display,start,sort)
    
    result_all=pd.concat([result_all,result])

for i in range(0,2):
    start= 1 + 100*i

  display100 개를 두번 가져와야 200개이고

  start를 다른 포지션(첫번째는 start=1, 두번째는 start=101)으로 가져왔습니다.

result_all=pd.concat([result_all, result])

  result_all에 각 for 문의 결과 result를 합쳤습니다.

 

result_all.shape을 확인해보면 200개의 데이터가 정상적으로 입력된 것이 확인됩니다.

 

이상으로 파이썬으로 네이버 개발자센터 API의 검색 > 블로그 데이터를 가져오는 방법을 알아봤습니다.

 

반응형