python으로 네이버 블로그 검색 api 활용하기!

 

안녕하세요. 홍지군입니다.

최근 python을 배우기 시작해서 쿠팡 파트너스api와 웹 크롤링을 통해서 얼마전 만든 개인 홈페이지와 네이버 블로그에 html소스를 자동으로 업로드 하는 프로그램을 만들어 보고 이제는 다른 기능들에 대해서도 하나씩 공부해보고 있습니다. ^^ 특히 최근에는 python으로 만드는 gui 프로그래밍도 공부중인데..컴퓨터로 공부할때에는 PyQt5 모듈을 활용해서 작업이 가능하지만 아이패드에서는 PyQt5가 안되는 듯해 간단한 API활용 정도만 올려볼려고 합니다. 

 

네이버의 오픈 api를 사용하기 위해서는 "네이버 개발자센터"에서 개발자 등록을 하고 클라이언트 id와 클라이언트 secret키를 받으면 되는데 클라이언트 키를 발급받는 정보는 이번에 작성하지 않습니다. 

 

developers.naver.com/docs/search/blog/

 

검색 API 블로그 검색 개발가이드

NAVER Developers - 검색 API 블로그 검색 개발가이드

developers.naver.com

검색 api를 사용하기 위한 기본 소스를 검색 api 블로그 검색 개발가이드에서 확인해볼 수 있습니다. 

 

네이버의 open api 검색 서비스는 블로그, 뉴스, 책, 성인 검색어 판별, 백과사전, 영화, 카페글, 지식in, 지역, 오타변환, 웹문서, 이미지, 쇼핑, 전문자료 등을 검색할 수 있습니다. 기본으로 제공하는 오픈 소스코드는 java, php, node.js, python, c#으로 되어있습니다.

api 활용을 위한 오픈소스는 github.com 홈페이지에서도 네이버를 검색하면 쉽게 찾아볼 수 있습니다.

 

기본으로 제공되는 python 소스를 그대로 복사 붙여넣기를 한뒤에 사진의 client_id = "" 부분과 client_secret = "" 부분을 발급받은 정보로 수정합니다. 검색을 하기 위한 키보드는 바로 아랫줄에 있는 encText = urllib.parse.quote("")의 "" 부분에 검색할 키워드를 입렵해 주시면 되는데요. 저는 제 티스토리 블로그 주소인 swpfun 을 검색해 봤습니다. (오른쪽이 결과) 

 

import os
import sys
import urllib.request
client_id = "발급받은 클라이언트 정보를 입력!!!"  # <- 발급받은 client id 
client_secret = "발급받은 클라이언트 secret정보 입력!! "        # <- 발급받은 client secret 
encText = urllib.parse.quote("swpfun")   # <- search keyword 
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)

 

소스코드를 복사 붙여넣기 후 client 정보만 입력 후 실행해봅니다! 실행이 모두 끝났다면 이제 조건 검색을 추가해서 조금더 디테일한 검색을 해보도록 하겠습니다. 

url = "https://openapi.naver.com/v1/search/blog?query=" + encText #

이전 소스에서는 단순하게 기본적인 검색결과만을 json데이터로 받아왔습니다. 네이버 블로그 검색 api에서는 단순 키워드에 대한 검색 결과뿐만 아니라 출력할 건수(display)를 지정하거나 검색 시작(start)지점을 지정하고 정렬(sort)옵션을 지정할 수 있습니다. 

 

검색을 할 키워드인 query=""는 필수 옵션이지만 다른 옵션들은 필수가 아닌 선택사항입니다. 출력을 할 display 옵션은 기본 10으로 되어있고 최대 100개까지 출력이 가능하고 검색의 시작 지점 start는 기본 1에서 최대 1,000까지 지정이 가능합니다. 정렬 sort는 기본 유사도(sim)으로 되어있고 날짜 순으로 정렬할 수 있는 date가 있습니다. 

 

그러면 display, start, sort 옵션을 골고루 사용해서 다시 검색을 진행해보겠습니다. 

 

조건의 추가는 &display=5 처럼 앞에 &를 추가해서 display와 start 그리고 sort를 적절히 사용할 수 있습니다. 

먼저 display를 5개 보여주고 start를 1부터 정렬은 날짜순으로 검색을 해본 결과입니다. 

결과에 보면 2020년 8월 29일에 작성된 글이 가장 1순위로 검색이 되고 다음은 2020년 8월 18일에 작성된 글이 2번째로 보여집니다. 모든 결과는 display를 5로 지정해서 5개의 정보만을 보여줍니다. 

이번에는 start값을 2로 변경해서 다시 한번 검색을 해보도록 하겠습니다. 

start를 2로 지정하니 첫번째 글이 나오지 않고 2번째 2020년 8월 18일에 작성된 글이 가장 먼저 표시되어지는 것을 확인해 볼 수 있습니다. 

 

원하는 옵션만을 사용해서 검색을 할 수 있는데 만약 start, sort옵션을 지정하지 않고 보여지는 개수만 변경하고 싶다면

 

&display=n 만 추가해주시면 됩니다. 

상세검색 기능 사용하기 

검색된 결과의 개수, 시작지점, 정렬방법 뿐만 아니라 검색시에 상세검색 기능을 사용하는 방법에 대해서 알아보겠습니다. 

네이버에서 검색할때 조금더 검색 결과의 범위를 줄이기 위해서 상세검색 기능을 사용하곤 합니다. blog api를 활용할때는 어떻게 사용해야되는지 한번 알아보겠습니다. 상세검색 기능들을 보면 "정확히 일치하는 단어/문장", "반드시 포함하는 단어", "제외하는 단어"의 상세 검색 옵션이 있습니다. 

 

일치하는 단어/문장 은 "" 으로 넣어주고 반드시 포함하는 단어는 +로 제외하는 단어는 -를 사용할 수 있습니다. 

검색 키워드를 담고 있는 encText에 키워드를 입력시 쌍따옴표""를 작은따옴표''로 변경해 주고 키워드 내에 쌍따옴표를 사용해 정확히 일치하는 단어/문장이 검색되도록 설정해주면 됩니다. 저는 swpfun을 입력해 "tistory"가 정확히 일치하는 단어로 설정하고 naver 단어를 제외해서 검색을 했습니다. api를 활용할때 조금더 정확한 데이터를 뽑아올 수 있습니다. 

 

 

json 검색 결과! 

검색 결과의 데이터입니다. 

title = 문서의 제목
link = 문서의 url 
discription = 문서의 내용을 요약한 정보
bloggername = 블로거 명
bloggerlink = 블로그 url
postdate = 작성일

 

다음번에는 제목, 링크, 요약정보, 블로거 명, 블로거 주소, 작성일에 대한 데이터를 json 형식으로 받아와 데이터를 뽑아와서 정렬하고 사용하는 방법에 대해서 알아보겠습니다.

댓글

Designed by JB FACTORY