Skip to content
Home » 네이버 키워드 Api | 네이버 검색 Api 한번에 끝내기 – 네이버 웹문서, 지식In, 뉴스, 블로그, 책, 영화, 쇼핑 데이터 다 가져오기 답을 믿으세요

네이버 키워드 Api | 네이버 검색 Api 한번에 끝내기 – 네이버 웹문서, 지식In, 뉴스, 블로그, 책, 영화, 쇼핑 데이터 다 가져오기 답을 믿으세요

당신은 주제를 찾고 있습니까 “네이버 키워드 api – 네이버 검색 API 한번에 끝내기 – 네이버 웹문서, 지식iN, 뉴스, 블로그, 책, 영화, 쇼핑 데이터 다 가져오기“? 다음 카테고리의 웹사이트 hu.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: https://hu.taphoamini.com/photos. 바로 아래에서 답을 찾을 수 있습니다. 작성자 이수안컴퓨터연구소 이(가) 작성한 기사에는 조회수 16,828회 및 좋아요 257개 개의 좋아요가 있습니다.

Table of Contents

네이버 키워드 api 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 네이버 검색 API 한번에 끝내기 – 네이버 웹문서, 지식iN, 뉴스, 블로그, 책, 영화, 쇼핑 데이터 다 가져오기 – 네이버 키워드 api 주제에 대한 세부정보를 참조하세요

데이터 수집 Open API
데이터 스크래핑 Data Scraping
네이버 API 한번에 끝내기
네이버 웹문서, 지식iN, 뉴스, 블로그, 책, 영화, 쇼핑 데이터 가져오기
이수안 컴퓨터 연구소 (SuanLab)
www.suanlab.com

네이버 키워드 api 주제에 대한 자세한 내용은 여기를 참조하세요.

[오픈소스 리뷰기] 네이버 검색광고 API 이용하기 – 디노랩스

데이터랩 API에서 제공했던 통합 검색어 트렌드, 쇼핑인사이트와는 다르게 검색광고 API에서는 키워드도구라는 기능을 제공합니다. 키워드도구를 사용하여 …

+ 여기에 더 보기

Source: www.dinolabs.ai

Date Published: 9/6/2021

View: 4118

파이썬으로 네이버 키워드도구 사용하기

네이버 키워드도구API를 파이썬으로 구현하여 네이버 키워드 검색량을 조회하고 연관검색어를 추출해보겠습니다. 또 판다스를 사용하여 검색결과를 …

+ 여기에 자세히 보기

Source: workingwithpython.com

Date Published: 1/12/2021

View: 9976

네이버 검색광고 API로 연관키워드를 검색해보자. – 프로그래머?

그래야 내 글이, 내 상품이 검색에 많이 노출되겠죠? ​. 네이버 검색광고 키워드 도구도 많이 사용하실 거예요. ​.

+ 자세한 내용은 여기를 클릭하십시오

Source: junglow9.tistory.com

Date Published: 7/12/2022

View: 8500

네이버 키워드 조회 수 트랜드 분석 만드는 방법 > 연구 칼럼

많은 분들이 키워들르 분석 할 때 해당 서비스를 사용하는데, 도대체 이 정보는 어디서 가져올까요? 1. 네이버 광고 api 우선 가장 많이 쓰이는 정보들은 …

+ 여기에 자세히 보기

Source: sidedeveloper.com

Date Published: 12/9/2022

View: 4804

[자바스크립트] 네이버 검색광고 API 이용하기 (Node.js) – React

네이버에서는 여러가지 API 서비스를 제공한다. 대표적으로 developers.naver.com/products/intro/plan/ API 소개 네이버 오픈 API 목록 네이버 …

+ 여기에 더 보기

Source: ukcasso.tistory.com

Date Published: 3/15/2021

View: 1635

네이버 검색API로 키워드 수집(with Python)

네이버 검색API로 키워드 수집(with Python) · Naver 검색 API 1회 Response 값인 100개를 초과하는 기사들에 대한 수집코드 추가 · 실행시간 기준 하루치의 …

+ 자세한 내용은 여기를 클릭하십시오

Source: strangeronpaleblue.com

Date Published: 12/16/2021

View: 1177

네이버 API를 사용한 검색어 트렌드 크롤링 툴-1부 – 브런치

네이버 API 검색어 크롤링을 활용해서 코스피 상장기업 트렌드를 살펴보자 … 와 양의 상관관계가 있을만한 키워드들을 keywords에 함께 넣어준다.

+ 여기에 표시

Source: brunch.co.kr

Date Published: 4/15/2021

View: 6688

혹시? 네이버 키워드(API) 조회수 조언 부탁 드립니다~ – 아미나

부족한 실력 이지만 검색API를 이용해서 네이버 쇼핑 정보 추출하는것 까지는 만들어 보았는데…. 네이버 키워드 조회수를 가져 오는 프로그램 만들어 …

+ 자세한 내용은 여기를 클릭하십시오

Source: amina.co.kr

Date Published: 4/23/2021

View: 3707

주제와 관련된 이미지 네이버 키워드 api

주제와 관련된 더 많은 사진을 참조하십시오 네이버 검색 API 한번에 끝내기 – 네이버 웹문서, 지식iN, 뉴스, 블로그, 책, 영화, 쇼핑 데이터 다 가져오기. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

네이버 검색 API 한번에 끝내기 - 네이버 웹문서, 지식iN, 뉴스, 블로그, 책, 영화, 쇼핑 데이터 다 가져오기
네이버 검색 API 한번에 끝내기 – 네이버 웹문서, 지식iN, 뉴스, 블로그, 책, 영화, 쇼핑 데이터 다 가져오기

주제에 대한 기사 평가 네이버 키워드 api

  • Author: 이수안컴퓨터연구소
  • Views: 조회수 16,828회
  • Likes: 좋아요 257개
  • Date Published: 2020. 8. 15.
  • Video Url link: https://www.youtube.com/watch?v=C8-SII6S4Bc

[오픈소스 리뷰기] 네이버 검색광고 API 이용하기

오픈소스 리뷰 : 슬기로운 오픈소스 사용법 리뷰해드립니다!

#11 네이버 검색광고 API 이용하기

안녕하세요. 디노랩스입니다!

지난 시간에 이어 이번 시간에는 네이버에서 제공하는 검색광고 API 활용법을 알아볼건데요.

데이터랩 API에서 제공했던 통합 검색어 트렌드, 쇼핑인사이트와는 다르게 검색광고 API에서는 키워드도구라는 기능을 제공합니다. 키워드도구를 사용하여 키워드 검색량을 조회할 수 있고 연관키워드들을 추출할 수 있는데, 이를 활용한다면 마케터 혹은 기획자들이 현업에서 요긴하게 사용될 거에요! >_< 키워드도구 기능 역시 네이버 검색광고(LINK)에서 제공하고 있습니다. 하지만 검색광고 API를 활용하면 직접 데이터를 수집하여 사용 목적에 알맞게 데이터를 가공할 수 있으며 반복 작업이 필요한 경우 조금 더 효율적으로 데이터를 수집할 수 있다는 장점이 있습니다. 이번 실습에서 작성한 코드를 활용하여 업무의 효율성을 높여보세요!!😀 01_API 이용신청 검색광고 API 역시 활용하기 위해서는 API 이용 신청을 해야합니다. 아래 링크에 접속하여 로그인한 뒤 우측상단의 광고시스템 > 도구 > API 사용관리 > 네이버 검색광고 API 서비스 신청 버튼을 눌러 이용신청을 완료해주세요!

https://searchad.naver.com/

신청이 완료되었다면 내 계정, 엑세스라이선스, 비밀키 를 확인할 수 있습니다.

02_연관키워드 및 검색량조회

키워드, 업종, 시즌 월, 시즌 테마를 입력하여 연관 키워드 및 검색량 등을 조회해보겠습니다.

우선 필요한 라이브러리를 import 하고 생성한 key 들을 입력합니다.

import time import random import requests import hashlib, hmac, base64

# 생성된 key를 변수에 저장합니다. CUSTOMER_ID = ‘CUSTOMER_ID 를 입력하세요’ API_KEY = ‘엑세스라이선스 를 입력하세요’ SECRET_KEY = ‘비밀키 를 입력하세요’

먼저 네이버 github에서 제공하는 sample code를 참고하여 API사용에 필요한 모듈과 함수를 정의하겠습니다.

[참고] https://github.com/naver/searchad-apidoc/tree/master/python-sample/examples

def generate(timestamp, method, uri, secret_key): message = “{}.{}.{}”.format(timestamp, method, uri) hash = hmac.new(secret_key.encode(“utf-8”), message.encode(“utf-8″), hashlib.sha256) hash.hexdigest() return base64.b64encode(hash.digest()) def get_header(method, uri, api_key, secret_key, customer_id): timestamp = str(int(time.time() * 1000)) signature = generate(timestamp, method, uri, SECRET_KEY) return {‘Content-Type’: ‘application/json; charset=UTF-8’, ‘X-Timestamp’: timestamp, ‘X-API-KEY’: API_KEY, ‘X-Customer’: str(CUSTOMER_ID), ‘X-Signature’: signature}

다음으로 키워드 도구 API를 사용하기 위해 네이버 검색광고 API Document의 RelKwdStat 서비스를 살펴보겠습니다.

http://naver.github.io/searchad-apidoc/#/operations/GET/~2Fkeywordstool

위 사진을 보면 API에 요청할 때 사용되는 method 는 GET 방식이며 URI는 /keywordstool 임을 확인할 수 있습니다.

또한 Parmater 항목을 통해 요청식 입력하는 parameter들을 확인할 수 있습니다.

siteId : 웹사이트 ID

biztpId : 업종 ID

hintKeywords : 키워드 (최대 5개)

event : 시즌 테마 테마별 코드 참고

month : 시즌 월

showDetail : 검색결과에 검색량,CTR 등의 지표들을 포함할지 여부를 결정 1 : 관련 키워드, 검색량, CTR, 경쟁정도 등을 모두 표시 0 : 관련 키워드, 월간 검색수 만 표시

요청에 사용되는 parameter 들은 아래 사진과 같이 실제 키워드 도구 페이지에서 확인할 수 있습니다.

이제 uri 와 parameter 들을 모두 확인했으니 키워드를 입력해보겠습니다.

uri = ‘/keywordstool’ # BASE_URL 뒤에 오는 uri 입니다. method = ‘GET’ # GET 방식을 사용합니다. # parameter 들을 입력합니다. (가장 먼저 hintKeywords와 showDetail 만 입력해보겠습니다.) query = { ‘siteId’: ”, ‘biztpId’: ”, ‘hintKeywords’: input(‘연관키워드를 조회할 키워드를 입력하세요

‘), ‘event’: ”, ‘month’: ”, ‘showDetail’: ‘1’ }

이제 BASE_URL과 uri, query 들을 합쳐 API에 request 해보겠습니다.

BASE_URL = ‘https://api.naver.com’

r = requests.get( BASE_URL + uri, params = query, headers = get_header( method=method, uri=uri, api_key=API_KEY, secret_key=SECRET_KEY, customer_id=CUSTOMER_ID )) r_data = r.json()

return 된 결과를 확인해보겠습니다.

r_data.keys()

len(r_data[‘keywordList’])

r_data[‘keywordList’][0]

위와 같이 호출한 데이터를 확인해보면 ‘relKeyword’라는 키의 값에 ‘운동화’가 출력된 것을 확인할 수 있으며, 검색된 키워드에 대한 여러 지표들이 함께 출력된 것을 확인할 수 있습니다.

relKeyword : 연관키워드 선택한 기준과 연관도가 높은 키워드입니다.

monthlyPcQcCnt : 월간검색수_PC

monthlyMobileQcCnt : 월간검색수_모바일 최근 한 달 간 사용자가 해당 키워드를 검색했을 때, 통합검색 영역에 노출된 광고가 받은 평균 클릭수 입니다

monthlyAvePcClkCnt : 월평균클릭수_PC

monthlyAveMobileClkCnt : 월평균클릭수_모바일 최근 한 달 간 사용자가 해당 키워드를 검색했을 때, 통합검색 영역에 노출된 광고가 받은 평균 클릭수 입니다.

monthlyAveMobileCtr : 월평균클릭률_모바일

monthlyAvePcCtr : 월평균클릭률_PC 최근 한 달간 해당 키워드로 통합검색 영역에 노출된 광고가 받은 평균 클릭률을 의미합니다. 클릭률의 의미: 광고가 노출되었을때 노출된 광고가 검색사용자로부터 클릭을 받는 비율을 말합니다.

compIdx : 경쟁정도 최근 한달간 해당 키워드에 대한 경쟁정도를 PC통합검색영역 기준으로 높음/중간/낮음으로 구분한 지표입니다. 다수의 광고주가 추가한 광고일수록 경쟁정도는 높을 수 있습니다.

plAvgDepth : 월평균노출광고수 최근 한 달 간 사용자가 해당 키워드를 검색했을 때, PC통합검색 영역에 노출된 평균 광고 개수입니다. “경쟁정도”지표와 함께 키워드의 경쟁정도를 가늠해볼 수 있습니다.

실제 네이버 검색광고 키워드 도구에서 ‘운동화’를 검색한 결과와 API를 통해 호출한 데이터를 비교해보세요.

이제 호출한 데이터를 pandas를 사용하여 데이터 프레임 형태로 변환해보겠습니다.

import pandas as pd # 데이터프레임을 생성합니다. df = pd.DataFrame(r.json()[‘keywordList’]) # 칼럼명을 변경합니다. df.rename({ ‘compIdx’:’경쟁정도’, ‘monthlyAveMobileClkCnt’:’월평균클릭수_모바일’, ‘monthlyAveMobileCtr’:’월평균클릭률_모바일’, ‘monthlyAvePcClkCnt’:’월평균클릭수_PC’, ‘monthlyAvePcCtr’:’월평균클릭률_PC’, ‘monthlyMobileQcCnt’:’월간검색수_모바일’, ‘monthlyPcQcCnt’: ‘월간검색수_PC’, ‘plAvgDepth’:’월평균노출광고수’, ‘relKeyword’:’연관키워드’ }, axis=1, inplace=True) # 10건 미만인 데이터의 경우 특수기호(‘<')를 포함합니다. # 손쉬운 데이터 처리를 위해 특수기호 ('<') 를 제거합니다. df = df.replace('< 10','10') # 데이터 타입을 변경합니다. df[['월간검색수_PC', '월간검색수_모바일']] = df[['월간검색수_PC', '월간검색수_모바일']].apply(pd.to_numeric) df.head() df.info() # sort_values() 메서드를 활용하여 월간검색수_PC를 기준으로 높은순서대로 확인할 수 있습니다. df.sort_values(by='월간검색수_PC', ascending=False) 03_클래스로 구현 # colab에서 한글 폰트 사용을 하기 위한 코드 import matplotlib.font_manager as fm !apt-get -qq -y install fonts-nanum > /dev/null fontpath = ‘/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf’ font = fm.FontProperties(fname=fontpath, size=9) fm._rebuild()

# 한글 폰트 사용을 위해 런타임을 재시작합니다. import os os.kill(os.getpid(), 9)

import matplotlib.pyplot as plt import matplotlib as mpl import matplotlib.font_manager as fm # 마이너스 표시 문제 mpl.rcParams[‘axes.unicode_minus’] = False # 한글 폰트 설정 path = ‘/usr/share/fonts/truetype/nanum/NanumGothicBold.ttf’ font_name = fm.FontProperties(fname=path, size=18).get_name() plt.rc(‘font’, family=font_name) fm._rebuild()

import time import random import requests import hashlib, hmac, base64 import pandas as pd from wordcloud import WordCloud

class NaverSearchadKeywordAPI(): “”” 네이버 검색광고 키워드 오픈 API 컨트롤러 클래스 “”” def __init__(self, customer_id, api_key, secret_key): “”” 인증키 설정 및 base url 초기화 “”” self.customer_id = customer_id self.api_key = api_key self.secret_key = secret_key self.base_url = “https://api.naver.com” def _generate(self, timestamp, method, uri, secret_key): “”” signature를 generate 하는 함수 “”” message = “{}.{}.{}”.format(timestamp, method, uri) hash = hmac.new(secret_key.encode(“utf-8”), message.encode(“utf-8”), hashlib.sha256) hash.hexdigest() return base64.b64encode(hash.digest()) def _get_header(self, method, uri, api_key, secret_key, customer_id): “”” header 생성 함수 “”” timestamp = str(int(time.time() * 1000)) signature = generate(timestamp, method, uri, secret_key) return {‘Content-Type’: ‘application/json; charset=UTF-8’, ‘X-Timestamp’: timestamp, ‘X-API-KEY’: API_KEY, ‘X-Customer’: str(customer_id), ‘X-Signature’: signature} def get_data(self, hintKeywords=None, siteId=None, biztId=None, event=None, month=None, showDetail=1): “”” 요청 결과 반환 “”” # keyword를 입력하지 않을 경우 에러를 발생시킵니다. assert hintKeywords != None, “keyword를 입력하세요!!” query = { ‘siteId’: siteId, ‘biztpId’: biztId, ‘hintKeywords’: hintKeywords, ‘event’: event, ‘month’: month, ‘showDetail’: showDetail, } r = requests.get( self.base_url + uri, params = query, headers = self._get_header( method=’GET’, uri=’/keywordstool’, api_key=self.api_key, secret_key=self.secret_key, customer_id=self.customer_id, )) self.df = pd.DataFrame(r.json()[‘keywordList’]) # 칼럼명을 변경합니다. self.df.rename({ ‘compIdx’:’경쟁정도’, ‘monthlyAveMobileClkCnt’:’월평균클릭수_모바일’, ‘monthlyAveMobileCtr’:’월평균클릭률_모바일’, ‘monthlyAvePcClkCnt’:’월평균클릭수_PC’, ‘monthlyAvePcCtr’:’월평균클릭률_PC’, ‘monthlyMobileQcCnt’:’월간검색수_모바일’, ‘monthlyPcQcCnt’: ‘월간검색수_PC’, ‘plAvgDepth’:’월평균노출광고수’, ‘relKeyword’:’연관키워드’ }, axis=1, inplace=True) # 10건 미만인 데이터의 경우 특수기호(‘<')를 포함합니다. # 손쉬운 데이터 처리를 위해 특수기호 ('<') 를 제거합니다. self.df = self.df.replace('< 10','10') # 데이터 타입을 변경합니다. self.df[['월간검색수_PC', '월간검색수_모바일']] = self.df[['월간검색수_PC', '월간검색수_모바일']].apply(pd.to_numeric) return self.df def plot_wordcloud(self, by, topk): """ 상위 k개의 연관검색어를 워드클라우드로 시각화하는 함수 """ assert by in {"월간검색수_PC", "월간검색수_PC", "월간검색수_모바일", "월평균클릭수_PC", "월평균클릭수_모바일", "월평균클릭률_PC", "월평균클릭률_모바일", "월평균노출광고수"}, "정렬기준을 정확하게 입력하세요" # 정렬된 데이터를 topk 개 만큼만 불러옵니다. topk_df = self.df.sort_values(by=by, ascending=False).loc[:topk,["연관키워드",by]] # 연관키워드를 key로, 데이터를 value로 하는 딕셔너리를 생성합니다. keywords = topk_df.set_index('연관키워드').to_dict()[by] # WordCloud 객체를 생성합니다. wc = WordCloud( font_path='/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf', # 한글 설정을 위해 폰트 경로를 지정합니다. () background_color="white", width=2000, height=1000, ) # keywords 딕셔너리로부터 이미지를 생성합니다. cloud = wc.generate_from_frequencies(keywords) plt.figure(figsize=(20,10)) plt.title(f"{by} 기준 상위 {topk} 개 연관검색어", fontsize=20) plt.axis('off') plt.imshow(cloud) return cloud # apple 이라는 인스턴스를 생성해보겠습니다. apple = NaverSearchadKeywordAPI( customer_id='CUSTOMER_ID 를 입력하세요', api_key='엑세스라이선스 를 입력하세요', secret_key='비밀키 를 입력하세요' ) # 키워드로 "애플"을 입력하여 데이터를 로드합니다. apple.get_data(hintKeywords='애플') # "월간검색수_모바일"을 기준으로 상위 30개의 연관검색어를 시각화해보겠습니다. apple.plot_wordcloud(by="월간검색수_모바일", topk=30) 오늘은 여기까지 입니다!! 네이버에서 제공하는 데이터랩, 쇼핑인사이트에 이어서 오늘 검색광고 API 이용하는 법까지 함께 해보았는데요. 정말 여러 방면에서 활용적일것 같죠? ㅎㅎ 슬기로운 오픈소스 사용법! 남은 포스팅들도 기대해주세요!

파이썬으로 네이버검색광고API로 키워드검색량 조회 및 연관검색어 추출

네이버 검색광고에는 위와 같은 키워드도구가 있습니다. 키워드도구를 사용하여 키워드 검색량을 조회할 수 있고 연관키워드들을 추출할 수 있는데요, 마케터 혹은 기획자들이 현업에서 요긴하게 사용할 수 있는 툴입니다.

그런데 네이버검색광고API에서 제공하는 여러 서비스 중에서도 키워드도구API가 있습니다. 따라서 우리는 파이썬으로 키워드도구API를 사용하여 키워드 검색량 조회 및 연관키워드를 추출할 수 있는데요, 그렇다면 어떻게 코딩하여 키워드도구API를 사용할 수 있는지 살펴보도록 하겠습니다.

1. 키워드도구 API 사용하기

powered by Advanced iFrame free. Get the Pro version on CodeCanyon.

먼저 네이버 github에서 제공하는 sample code를 사용하여 API사용에 필요한 모듈과 함수를 정의하고, 자신의 API_KEY, SECRET_KEY, CUSTOMER_ID를 입력합니다.

여기에서 네이버 github이란 무엇이고 sample code는 어디서 살펴볼 수 있는지, API_KEY, SECRET_KEY, CUSTOMER_ID를 어디서 발급받는지에 대한 자세한 설명은 지난 포스팅을 통해 살펴보실 수 있습니다.

다음으로 키워드도구API를 사용해야 합니다. 키워드도구API의 사양을 살펴보기 위하여는 네이버 검색광고 API Document에서 RelKwdStat 서비스를 살펴보면 됩니다.

HTTP request 항목을 통해 키워드도구의 method는 GET 방식이며 URI는 /keywordstool임을 확인할 수 있습니다. 이 정보를 어떻게 활용할 수 있는지는 아래의 코드에서 살펴보도록 하겠습니다.

또 Parameters항목에서는 Query parameter 형식(물음표 뒤에 매개변수와 매개변수에 전달할 값을 입력)으로 매개변수를 입력해야함을 알 수 있습니다. 또 우리가 여기에서 사용할 매개변수는 hintKeywords와 showDetail 매개변수입니다. hintKeywords는 우리가 키워드도구에 직접 입력하는 키워드가 되며, showDetail은 검색결과에 검색량,CTR 등의 지표들을 포함할지 여부를 결정하는 역할을 합니다.

powered by Advanced iFrame free. Get the Pro version on CodeCanyon.

HTTP request 항목과 Parameters항목의 설명을 토대로 입력합니다. hintKeywords의 값은 format함수에 input함수를 전달하여, 검색할 키워드를 그때그때 입력하는 방식으로 구성하였습니다. 예시에서는 “파이썬”이라는 키워드로 검색해보도록 하겠습니다.

2. 키워드 도구 화면처럼 데이터 전처리하기

powered by Advanced iFrame free. Get the Pro version on CodeCanyon.

위와 같이 호출한 데이터를 확인해보면 ‘relKeyword’라는 키의 값에 ‘파이썬’이 출력된 것을 확인할 수 있으며, 검색된 키워드에 대한 여러 지표들이 함께 출력된 것을 확인할 수 있습니다.

실제로 네이버 검색광고의 키워드 도구에서 ‘파이썬’을 검색한 결과와 키워드도구 API를 통해 호출한 데이터를 비교해보세요.

powered by Advanced iFrame free. Get the Pro version on CodeCanyon.

호출한 데이터를 보기좋게 수정해보겠습니다. 판다스를 import하고, 호출된 데이터를 그대로 데이터프레임 함수에 전달하면 데이터프레임 형태로 변환됩니다.

powered by Advanced iFrame free. Get the Pro version on CodeCanyon.

키워드도구 화면에서 출력된 것처럼, 영문칼럼명을 한글칼럼명으로 수정해보겠습니다. rename함수를 사용하고, 매개변수에 axis=1을 입력하여 칼럼명을 변경하도록 합니다. 또 inplace 매개변수를 사용하여 기존 변수의 내용을 대체합니다.

powered by Advanced iFrame free. Get the Pro version on CodeCanyon.

키워드도구 화면의 순서와 동일하게 데이터프레임 칼럼의 순서도 정렬합니다. 모든 과정이 완료되면 화면을 살펴보면 키워드도구처럼 출력된것을 확인할 수 있습니다. 키워드도구를 사용하시는 현업자 분들에게 많은 도움되시기 바랍니다.

네이버 검색광고 API로 연관키워드를 검색해보자.

반응형

키워드 검색 많이들 하시나요?

근래에 블로그와 스마트 스토어에 관심이 생겼는데요.

관련 강의를 듣다 키워드 검색이란 걸 알게 되었습니다.

작성한 글을 검색 결과 상위에 노출하기 위해서.

스토어에 등록한 상품을 상단에 노출시키기 위해서.

사람들이 많이 사용하는 키워드를 찾는 거죠.

그래야 내 글이, 내 상품이 검색에 많이 노출되겠죠?

네이버 검색광고 키워드 도구도 많이 사용하실 거예요.

728×90

그런데 왜 저는 키워드를 발굴해서 글을 쓰거나

상품을 올릴 생각보다 이 사이트를 어떻게 만들었지?

저 데이터는 어디서 가져오는 거지?

뭐 이런 게 더 궁금할까요?

( 아무래도 돈 버는 데에는 별 관심과 재능이 없는 듯…. )

암튼, 이것도 찾아보니 있는 것 같더라고요.

도구 메뉴에 API 사용 관리라는 게 보이시죠?

API에 대한 설명은 대략 이렇습니다.

아마도, 키워드 관련 기능을 제공하는 많은 사이트들이

이걸 사용하는 것 같군요.

네이버 검색광고 API 매뉴얼 사이트도 있습니다.

searchad-apidoc (naver.github.io)

문제는 문서 내용이 너무 빈약해서 이걸로 어떻게?

많은 분들이 이 API로 프로그램을 만드셨던데 대단들 하십니다.

일단, 저도 관심을 가졌으니 테스트라도 해봐야겠습니다.

이마트24, 와인추천으로 키워드 조회한 결과입니다.

아래는 POSTMAN 프로그램으로 조회해 본 결과입니다.

예상한 데로 잘 작동하는군요!

자, 이제 API 동작 확인을 했으니 파이썬으로 만들어 봐야겠군요!!!

반응형

네이버 키워드 조회 수 트랜드 분석 만드는 방법 > 연구 칼럼

네이버 키워드 조회 수 트랜드 분석 서비스를 하는 업체들은 어떻게 만들었을까요?

이미 유명한 업체부터 정말 다양한 업체들이 해당 서비스를 블로그나 쇼핑에 특화되어 만들고 있습니다.

대표적으로 pc 조회수, 모바일 조회수 등 여러 정보를 가져 오는 것을 확인 할 수 있습니다.

많은 분들이 키워들르 분석 할 때 해당 서비스를 사용하는데, 도대체 이 정보는 어디서 가져올까요?

1. 네이버 광고 api

우선 가장 많이 쓰이는 정보들은 네이버 광고 api에서 데이터를 가져옵니다.

GET /keywordstool

{ “relKeyword” : string , “monthlyPcQcCnt” : string , “monthlyMobileQcCnt” : string , “monthlyAvePcClkCnt” : string , “monthlyAveMobileClkCnt” : string , “monthlyAvePcCtr” : string , “monthlyAveMobileCtr” : string , “plAvgDepth” : string , “compIdx” : string }

결과물에서

relKeyword – 키워드

monthlyPcQcCnt – 월간 PC 키워드 조회수

monthlyMobileQcCnt – 월간 MOBILE 키워드 조회수

monthlyAvePcClkCnt – 월 평균 PC 클릭수

monthlyAveMobileClkCnt – 월 평균 MOBILE 클릭수

monthlyAvePcCtr – 월 평균 PC 클릭율

monthlyAveMobileCtr – 월 평균 MOBILE 클릭율

plAvgDepth – 월 평균 광고 노출 수

compIdx – 경쟁 강도

이렇게 해당 API로 평균 조회수 클릭 수를 구할 수 있습니다.

GET /ncc/managedKeyword?keywords

{ “PCPLMaxDepth” : integer , “editTm” : string , “expUiType” : string , “isAdult” : boolean , “isLowSearchVolume” : boolean , “isRestricted” : boolean , “isSeason” : boolean , “isSellProhibit” : boolean , “keyword” : string , “regTm” : string }

위의 아이피로 isAdult – 성인용 키워드 여부 등을 확인 할 수 있습니다.

2. 네이버 개발자 센터의 오픈 API

그리고 블로그 글 수, 카페 글 수 등은 네이버 오픈 API를 활용하여 쉽게 가져 올 수 있습니다.

https://openapi.naver.com/v1/search/blog.json

https://openapi.naver.com/v1/search/cafearticle.json

total – 검색 결과 문서

위와 같이 오픈 API를 통해 총 발행량을 확인 할 수 있습니다.

많은 사이트에서 쇼핑에 특화되거나 블로그에 특화되어 더 많은 데이터를 보여주기는 하지만 대표적으로 위의 API들을 보여주는 것을 기본으로 합니다.

PS. API 별로 사용양의 한도가 정해져 있거나, 너무 반복되는 API 호출은 막힐 수 있습니다.

이전 글 : 크롬 트래픽 프로그램 대표 툴 selenium은 탐지가 불가능 할까?

[자바스크립트] 네이버 검색광고 API 이용하기 (Node.js) – 네이버 검색량 조회 예제 (/keywordstool API)

728×90

네이버에서는 여러가지 API 서비스를 제공한다. 대표적으로

developers.naver.com/products/intro/plan/

위와 같이 네이버 오픈 API 서비스와 아래 링크 네이버 검색광고 API 서비스이다.

naver.github.io/searchad-apidoc/#/guides

위에 오픈 API 서비스는 node.js를 이용한 사용방법이 자세히 나와있지만 네이버 검색광고 API 서비스는 Java, PHP, C#만 샘플 코드를 제공한다. 이마저도 초보자들은 쉽게 알아보기 힘들다.

그래서 네이버 검색광고 API를 node.js로 활용하는 방법을 포스팅하려고 한다.

1. 우선 네이버 검색광고 가이드 그대로 API 서비스 신청

1-1. 광고시스템에 로그인한다.

1-2. [도구>API 사용 관리] 메뉴를 클릭한다.

1-3. [네이버 검색광고 API 서비스 신청] 버튼을 클릭한 다음 약관을 확인합니다.

1-4. [위 내용을 모두 읽고 확인했습니다] 를 선택한 다음 [저장하기] 버튼을 클릭한다.

1-5. 엑세스라이선스와 비밀키가 자동으로 발급된다.

1-6. 엑세스라이선스와 비밀키로 API를 호출한다.

2. 1-6에 API 호출하는 방법

위 사항은 네이버 검색광고 API의 가이드이다.

준비해야할 사항은 크게 5가지이다. X-Timestamp, X-API-KEY, X-Customer, X-Signature 그리고 X-Signature를 만들기 위해 API_SECRETKEY가 필요하다.

X-API-KEY와 API-SECRETKEY 그리고 X-Customer는 검색광고 API 신청을 하면 자동으로 주어진다. 그리고 X-Signature를 만들기 위해서는 CryptoJS라는 라이브러리를 사용해야하기 때문에 설치해줘야 한다.

2-1. X-Signature 만들기

npm install crypto-js

timestamp는 현재 시간을 정확하게 파악하기 위해 사용된다. 그래야 서버에서 지금 요청한게 맞는지 점검하기 때문에 넣는거 같다.

var timestamp = Date.now() + ”;

가이드에 보면 이렇게 signature 키를 만들라고 나와있다. 이제 CryptoJS를 이용하여 만들어보자.

var method = “GET”; var timestamp = Date.now() + ”; var secretKey = “YOUR_SECRETKEY”; var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, secretKey); hmac.update(timestamp + ‘.’ + method + ‘.’ + api_url); var hash = hmac.finalize(); hash.toString(CryptoJS.enc.Base64);

이렇게 하면 Signature 키가 만들어 진다.

3. API 요청보내기

검색광고 API 가이드이다. 확실히 불친절하다. 주니어 개발자들이 보기에는 정말 힘겨울 수 있다.

아래 코드는 검색량 조회하기 위한 예제 코드이다. 이 코드를 활용해서 검색광고에 있는 API들을 이용하면 된다.

app.get(‘/keywordstool’, function(req, res) { var method = “GET”; var api_url = “/keywordstool”; var timestamp = Date.now() + ”; var accessKey = “YOUR_ACCESSKEY”; var secretKey = “YOUR_SECRETKEY”; var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, secretKey); hmac.update(timestamp + ‘.’ + method + ‘.’ + api_url); var hash = hmac.finalize(); hash.toString(CryptoJS.enc.Base64); const request = require(‘request’); const options = { url: ‘https://api.naver.com/keywordstool?hintKeywords=’ + encodeURI(req.query.hintKeywords) + ‘&showDetail=1’, headers: {‘X-Timestamp’:timestamp, ‘X-API-KEY’: accessKey, ‘X-API-SECRET’: “YOUR_SECRETKEY”, ‘X-CUSTOMER’: “YOUR_CUSTOMER_ID”, ‘X-Signature’: hash.toString(CryptoJS.enc.Base64)} }; request.get(options, function (error, response, body) { if (!error && response.statusCode == 200) { res.writeHead(200, {‘Content-Type’: ‘text/json;charset=utf-8’}); res.end(body); } else { res.status(response.statusCode).end(); console.log(‘error = ‘ + response.statusCode); console.log(error) } }); })

서버에서만 이렇게 보여줬고 프론트에서는 axios등을 통해 rest API로 통신하여 Response를 받으면 된다. response의 형태는 아래와 같고 그걸 이용해서 원하는 값들을 사용하면 된다.

여기까지가 API를 활용하는 방법을 나타낸 서버코드입니다. 프론트코드나 방법등을 자세히 알고싶으면 댓글에 남겨주시면 답변드리겠습니다.

검색량 조회를 이용한 프로그램 캡처화면

728×90

네이버 검색API로 키워드 수집(with Python)

반응형

정보보안 실무에서는 정책, 실제점검, 운영 등도 중요하지만 보안사고나 이슈를 빨리 확인하는 부분도 중요하다. 사고나 이슈 관련 뉴스를 통해 현재 운영하는 조직이나 시스템에 해당 문제점이 있진 않는지 파악하고 적시에 조치를 해야 하기 때문이다. 또한 사고사례를 재가공하여 임직원을 대상 내부 교육 자료로 활용 할 수 있다.

때문에 보안담당자, 실무자들은 메일링 서비스나 뉴스레터를 구독하고 있는 경우가 많다. 하지만 특정 업체나, 언론사 뉴스레터 서비스는 광고등에 의해 리포트 내용이 달라지는 경우가 있다. 이럴경우 담당자가 전체 언론사를 대상으로 자체적으로 뉴스를 수집하여 관련 정보를 취합 할 수 있다면 다양한 각도에서 생각해 볼 수 있는 좋은 토대가 될것이다.

지난 포스팅에서 작성한 코로나, 부동산 관련 뉴스 수집 코드를 조금 변경해 보안뉴스를 수집하는 코드를 만들었다. 이번엔 해당 코드를 조금 바꾸어 하루치(24시간)의 정보보안, 정보보호 뉴스를 수집하는 코드를 작성했다. 지난번과 똑같이 네이버 검색 API를 사용했으며 개발과정에서 달라지거나 추가된 부분들은 아래와 같다

Naver 검색 API 1회 Response 값인 100개를 초과하는 기사들에 대한 수집코드 추가

실행시간 기준 하루치의 기사만 수집 할 수 있도록 기사 작성 시간을 판별하는 Calc_Date 함수

Response JSON 값에서 원하는 데이터만 선별처리 하는 Get_Data 함수 (검색어, 기사타이틀, 기사요약, 링크, 날짜)

선별된 JSON 값을 DataFrame을 사용해 정제하여 출력

해당 코드를 스케줄러에 등록하여 매일 새벽에 돌아가게 한다면 매일 관련 뉴스들을 수집 할 수 있다. 정규식으로 제외 키워드를 설정하고 엑셀, 메일로 발송하는 코드를 추가해 고도화 하면 더 효과적으로 사용 할 수 있다.

수집대상 세팅 : 정보보안, 정보보호 키워드와 출력갯수, 정렬방법, 카테고리 설정 코드

def Security_Main(): json_result = [] req_query = [‘정보보안’, ‘정보보호’] req_display = ‘100’ req_sort = ‘date’ req_target = [‘news’] # 네이버 뉴스 Search_Main(req_target, req_query, req_display, req_sort, json_result) 수집기능 Main : 정보보안 관련 뉴스 수집을 위한 값들을 요청하고 편집하는 main 코드 def Search_Main(req_target, req_query, req_display, req_sort, json_result): nStart = 0 for target_url in req_target: # 검색섹션을 정한다 json_result.clear() for target_query in req_query: # 검색 키워드를 정한다 check_today = 0 target_query = target_query.rstrip(‘

‘) print(”

Keyword is ” + target_url + “_” + target_query + “…….”) json_search = Set_Search_Option(target_url, target_query, 1, req_display, req_sort) if (json_search == None): json_result.append({‘Keyword’: “”, ‘Title’: “”, ‘Description’: “”, ‘Link’: “”, ‘Date’: “”}) continue while ((json_search != None) and (json_search[‘display’] != 0)): for post_data in json_search[‘items’]: if (post_data[‘originallink’] != None): date_result = Calc_Date(post_data) if (date_result == 0): Get_Data(post_data, json_result, target_query) else: pd.set_option(‘display.max_columns’, 5) pd.set_option(‘display.width’, 5000) df = pd.DataFrame(json_result) print(df) check_today = 1 break tmp_nStart = nStart nStart = json_search[‘start’] + json_search[‘display’] if (nStart == 1001 or ( nStart – json_search[‘start’]) < 100 or tmp_nStart == nStart or check_today == 1): break json_search = Set_Search_Option(target_url, target_query, nStart, req_display, req_sort) 날짜계산 : 현재시간으로부터 1일(24시간 기준)으로 작성된 기사 수집 코드 def Calc_Date(post_data): date_result = datetime.strptime(post_data['pubDate'], '%a, %d %b %Y %H:%M:%S +0900') now_time = datetime.now() calc_time = now_time - date_result if (calc_time.days == 0 and math.floor(calc_time.seconds / 3600) < 24): ret_calc = 0 else: ret_calc = 1 return ret_calc 검색 요청 URL 옵션 세팅 : MAIN에서 받아온 정보로 요청 URL을 만들어 주고 json 형식으로 리턴해주는 코드 def Set_Search_Option(target_url, search_keyword, page_start, display, sort): sleep(0.1) url = furl('https://openapi.naver.com/v1/search/' + target_url) url.args['query'] = search_keyword url.args['display'] = display url.args['sort'] = sort url.args['start'] = page_start ret_data = Get_Search_Result(url) if (ret_data == None): return None else: return json.loads(ret_data) 검색 Request : 위에서 최종적으로 세팅된 모든 결과를 취합하여 Request를 보내는 코드 def Get_Search_Result(req_url): request = urllib.request.Request(req_url) request.add_header("X-Naver-Client-Id", client_id) request.add_header("X-Naver-Client-Secret", client_secret) try: response = urllib.request.urlopen(request) rescode = response.getcode() if (rescode == 200): return response.read().decode('utf-8') except Exception as e: print(e) print("Error Code:" + str(req_url)) return None 데이터 선별 : 요청에 의해 Response 되는 값중 필요한 부분만 선별하는 코드 def Get_Data(post, jsonResult, query): title_result = post['title'] description_result = post['description'] link_result = post['link'] date_result = datetime.strptime(post['pubDate'], '%a, %d %b %Y %H:%M:%S +0900') col_date = date_result.strftime('%Y-%m-%d %H:%M') jsonResult.append({'Keyword': query, 'Title': title_result, 'Description': description_result, 'Link': link_result, 'Date': col_date}) return [정보보안 기사 수집 Code] import urllib.request from furl import furl import json import math from time import sleep import pandas as pd # 날짜, 파일명 세팅을 위한 import import datetime from datetime import datetime # Navet API KEY client_id = "YOUR_CLIENT_ID" client_secret = "YOUR_CLIENT_SECRET" def Security_Main(): json_result = [] req_query = ['정보보안', '정보보호'] req_display = '100' req_sort = 'date' req_target = ['news'] # 네이버 뉴스 Search_Main(req_target, req_query, req_display, req_sort, json_result) def Search_Main(req_target, req_query, req_display, req_sort, json_result): nStart = 0 for target_url in req_target: # 검색섹션을 정한다 json_result.clear() for target_query in req_query: # 검색 키워드를 정한다 check_today = 0 target_query = target_query.rstrip(' ') print(" Keyword is " + target_url + "_" + target_query + ".......") json_search = Set_Search_Option(target_url, target_query, 1, req_display, req_sort) if (json_search == None): json_result.append({'Keyword': "", 'Title': "", 'Description': "", 'Link': "", 'Date': ""}) continue while ((json_search != None) and (json_search['display'] != 0)): for post_data in json_search['items']: if (post_data['originallink'] != None): date_result = Calc_Date(post_data) if (date_result == 0): Get_Data(post_data, json_result, target_query) else: pd.set_option('display.max_columns', 5) pd.set_option('display.width', 5000) df = pd.DataFrame(json_result) print(df) check_today = 1 break tmp_nStart = nStart nStart = json_search['start'] + json_search['display'] if (nStart == 1001 or ( nStart - json_search['start']) < 100 or tmp_nStart == nStart or check_today == 1): break json_search = Set_Search_Option(target_url, target_query, nStart, req_display, req_sort) def Calc_Date(post_data): date_result = datetime.strptime(post_data['pubDate'], '%a, %d %b %Y %H:%M:%S +0900') now_time = datetime.now() calc_time = now_time - date_result if (calc_time.days == 0 and math.floor(calc_time.seconds / 3600) < 24): ret_calc = 0 else: ret_calc = 1 return ret_calc # 검색 결과를 얻어옴 def Set_Search_Option(target_url, search_keyword, page_start, display, sort): sleep(0.1) url = furl('https://openapi.naver.com/v1/search/' + target_url) url.args['query'] = search_keyword url.args['display'] = display url.args['sort'] = sort url.args['start'] = page_start ret_data = Get_Search_Result(url) if (ret_data == None): return None else: return json.loads(ret_data) # 검색 요청 보냄 def Get_Search_Result(req_url): request = urllib.request.Request(req_url) request.add_header("X-Naver-Client-Id", client_id) request.add_header("X-Naver-Client-Secret", client_secret) try: response = urllib.request.urlopen(request) rescode = response.getcode() if (rescode == 200): return response.read().decode('utf-8') except Exception as e: print(e) print("Error Code:" + str(req_url)) return None # 필요한 데이터만 선별 def Get_Data(post, jsonResult, query): title_result = post['title'] description_result = post['description'] link_result = post['link'] date_result = datetime.strptime(post['pubDate'], '%a, %d %b %Y %H:%M:%S +0900') col_date = date_result.strftime('%Y-%m-%d %H:%M') jsonResult.append({'Keyword': query, 'Title': title_result, 'Description': description_result, 'Link': link_result, 'Date': col_date}) return Security_Main() [실행결과] Keyword is news_정보보안....... Keyword Title Description Link Date 0 정보보안 컴퓨터학원 코리아IT아카데미, ‘뜻밖의 특템’ 이벤트로 31,000여 개의 무료... 정보보안학원 코리아IT아카데미 관계자는 “따즈아 온라인 강의는 코리아교… http://edu.donga.com/?p=article&ps=view&at_no=… 2020-04-29 12:00 1 정보보안 서울시 2022년까지 와이파이6 공공생활권 설치 장비 성능평가시험(BMT)에 참여를 희망하는 업체는 5월11일(월)~12일(화) 서… http://www.newsmaker.or.kr/news/articleView.ht… 2020-04-29 11:58 2 정보보안 쌍용차 리스펙 코란도·티볼리···”CJ오쇼핑에서 판매” 안전 및 보안, 비서, 정보, 즐길거리, 원격제어, 차량관… http://www.seoulfn.com/news/articleView.html?i… 2020-04-29 11:55 3 정보보안 모질라, 인기 높은 화상 회의 앱 15개의 보안성 검사해 발표 많은 사람들이 찾는 유명 앱들이며, 사용자들이 궁금해 하는 보안 관련 … http://www.boannews.com/media/view.asp?idx=879… 2020-04-29 11:54 4 정보보안 서울 S-NET 핵심 와이파이6 구축 돌입…BMT 참여기업 공모 장비 성능평가시험(BMT)에 참여를 희망하는 업체는 5월 11일~12일 서울시청 <... https://news.naver.com/main/read.nhn?mode=LSD&... 2020-04-29 11:40 .. ... ... ... ... ... 132 정보보안 롤스로이스, COVID-19 데이터 연합 구축…비즈니스·경제 회복 지원 데이터 출판물과 라이선스, 개인정보보호 및 보안, 데이터 … http://www.efnews.co.kr/news/articleView.html?… 2020-04-28 12:55 133 정보보안 인텔, 마이크로소프트 애저 DCsv2-시리즈 출시 애저는 클라우드에서 데이터를 처리하는 동시에 보안 및 개인 정보<... http://www.it-b.co.kr/news/articleView.html?id... 2020-04-28 12:42 134 정보보안 인텔, 애저 기밀 컴퓨팅의 기반 마련 애저는 클라우드에서 데이터를 처리하는 동시에 보안 및 개인 정보<... http://sports.news.naver.com/esports/news/read... 2020-04-28 12:40 135 정보보안 포스트 코로나19 시대를 준비하는 유망기술은? 29일 온라인 포럼 개최 □ (2단계 : 영역별 변화상) 두 번째 단계로,향후 4대 환경변화에 의해서 큰 변... https://news.naver.com/main/read.nhn?mode=LSD&... 2020-04-28 12:20 136 정보보안 "포스트코로나 원격의료·비대면 서비스 향상…글로벌 공급망도 재편" 두 번째 단계로, 향후 4대 환경변화에 의해서 큰 변화가 예상되는 사회·경제 영역으... http://www.topstarnews.net/news/articleView.ht... 2020-04-28 12:13 [137 rows x 5 columns] Keyword is news_정보보호....... Keyword Title Description Link Date 0 정보보안 컴퓨터학원 코리아IT아카데미, ‘뜻밖의 특템’ 이벤트로 31,000여 개의 무료... 정보보안학원 코리아IT아카데미 관계자는 “따즈아 온라인 강의는 코리아교… http://edu.donga.com/?p=article&ps=view&at_no=… 2020-04-29 12:00 1 정보보안 서울시 2022년까지 와이파이6 공공생활권 설치 장비 성능평가시험(BMT)에 참여를 희망하는 업체는 5월11일(월)~12일(화) 서… http://www.newsmaker.or.kr/news/articleView.ht… 2020-04-29 11:58 2 정보보안 쌍용차 리스펙 코란도·티볼리···”CJ오쇼핑에서 판매” 안전 및 보안, 비서, 정보, 즐길거리, 원격제어, 차량관… http://www.seoulfn.com/news/articleView.html?i… 2020-04-29 11:55 3 정보보안 모질라, 인기 높은 화상 회의 앱 15개의 보안성 검사해 발표 많은 사람들이 찾는 유명 앱들이며, 사용자들이 궁금해 하는 보안 관련 … http://www.boannews.com/media/view.asp?idx=879… 2020-04-29 11:54 4 정보보안 서울 S-NET 핵심 와이파이6 구축 돌입…BMT 참여기업 공모 장비 성능평가시험(BMT)에 참여를 희망하는 업체는 5월 11일~12일 서울시청 <... https://news.naver.com/main/read.nhn?mode=LSD&... 2020-04-29 11:40 .. ... ... ... ... ... 472 정보보호 개별주택 공시가격 열람 및 이의신청 접수 지난해부터 전자 열람의 보편화, 개인정보보호, 예산 절감 등에 따라 개… http://www.upkorea.net/news/articleView.html?i… 2020-04-28 12:30 473 정보보호 경기남부경찰, 성 착취물 제작·판매·유포 72명 검거…10대가 가장 많아 경찰은 이들 중 9명을 아동·청소년의 성보호에 관한 법률 위반 등 혐의… http://www.hg-times.com/news/articleView.html?… 2020-04-28 12:24 474 정보보호 한국환경공단, ‘가축분뇨 전자인계관리시스템’ 사전 알림 기능 강화 액비살포 금지구역 알림 기능은 전국 수변구역 및 상수원 보호구역 위치<... http://theleader.mt.co.kr/articleView.html?no=... 2020-04-28 12:24 475 정보보호 서울아산병원, '의료진 손위생' 인공지능(AI) 관리 가능 의료진 개인정보가 안전하게 보호된다는 장점이 있다.서울아산… http://www.dailymedi.com/detail.php?number=855… 2020-04-28 12:20 476 정보보호 KISA, 중소기업 ‘개인정보 솔루션’ 지원… 점검도구 무료 배포 지난 2015년부터 개인정보보호 종합포털을 통해 배포하고 있다. 특히 … http://www.viva100.com/main/view.php?key=20200… 2020-04-28 12:20 [477 rows x 5 columns]

반응형

네이버 API를 사용한 검색어 트렌드 크롤링 툴-1부

‘바닥부터 시작하는 데이터 사이언스’ 에서는 본인이 데이터 사이언스를 공부하며 작성했던 코드와, 나름의 미니 프로젝트를 게시할 예정이다. 직접 작성 외에 다른 곳에서 그대로 가져온 코드는 거의 없지만, 가끔 참고를 통해 변형한 코드가 있을 수 있고 이러한 경우엔 출처를 게재할 것이다.

(프로그래밍, 또는 DS관련 지식에 있어 미숙한 점이 있을 수 있으니, 부정확한 정보가 있다면 지적해주시면 감사하겠다.)

시작은 이랬다..

처음엔 급상승 검색어 데이터를 크롤링해 볼 생각이었다

언젠가부터 네이버는 ‘네이버 데이터랩’이라는 서비스를 통해 일반 사용자들이 리서치, 연구, 등 각종 목적을 위해 데이터를 손쉽게 사용하도록 모아 제공하기 시작했다. 실제로 네이버 웹을 통해 크롤링을 한다면 웹 상에 현재 올라가있는 실시간 검색어와 같은 데이터들은 긁어모을 수 있지만, 때론 지금까지 네이버에 검색되었던 검색어들의 ‘행적’ 이 필요할 때가 있다. 예를들어 어떤 검색어가 어느 시기에 많이 검색되었는지, 등을 알고 싶은 경우에는 과거의 검색 데이터가 필요하고, 이것은 네이버만이 소유하고 있는 데이터이다. 그런데 이 데이터들을 아주 예쁘게 정리해서 공개한 것이다.

예를들면 이런식으로, 원하는 시기의 급상승 검색어들을 볼 수가 있다. 나는 문득 이러한 네이버의 과거 검색어들을 좀더 자유롭고 유연하게 활용할 수는 없을까 하는 생각이 들었다. 네이버 데이터랩 서비스는 과거 데이터에 대한 정보를 얻고 싶다면 지금 제공하는 서비스로 충분하지만, 각종 검색어의 과거 데이터를 시계열 정보 (시간 정보) 와 함께 전부 긁어온다면 더 유용한 분석을 많이 할 수 있을 것 같았다.

예를들어, 위의 스크린캡쳐 화면에만 봐도 세계적인 게임회사 라이엇게임즈 (Riot Games)의 ‘롤’ 점검과, 그의 경쟁사인 블리자드 (Blizzard)의 ‘오버워치’가 나란히 인기검색어에 들어와 있다. 이렇게 당시에 어떤 일이 일어났느냐에 따라 관련이 있는 검색어들이 함께 검색되곤 한다. 여기서 만일, 지금까지 모든 인기검색어의 시계열 데이터를 얻을 수 있다면 우리는:

1) 특정 검색어가 인기 검색어에 올랐을 시기의 인기검색어들만을 골라내어 시계열로 만든다

2) 주로 어떤 검색어가 특정 검색어와 함께 인기검색어에 오르는 경향이 있는지 빈도를 체크하고 시각화한다

3) 특정 검색어가 인기 검색어가 오를 때, 함께 나타나는 인기 검색어들을 분석해 주로 어떤 ‘배경’에서 특정 검색어가 많이 검색되는지 찾아본다

와 같은 과정을 통해 단지 눈으로 볼때는 쉽게 놓치곤 했던 정보들을 얻을 수 있지 않을까? 예를들어, 우리는 저 스크린샷 속의 ‘롤’, ‘오버워치’, ‘리니지’ 에 검색어를 보고 쉽게 ‘게임’이라는 공통점을 떠올리면서, 세 검색어가 함께 다량으로 검색된 것을 자연스럽게 받아들일 것이다.

그런데 이번엔 다음과 같은 경우를 생각해보자. 모바일 앱을 플랫폼으로 하는 퀴즈 프로그램 중 ‘잼라이브’라는것이 있다. 매일 정해진 시간에 인터넷 방송의 형식으로 진행자가 퀴즈 문제를 내고, 참여자들은 스마트폰 앱으로 접속해 실시간으로 퀴즈를 맞추는 형식이다. 총 12문제가 제시되며, 한문제라도 틀리게되면 그 사용자는 탈락이고, 마지막까지 남는 사용자들이 상금을 전부 나누어 가지는 방식이다. 모든 문제가 3지선다형에, 3초안에 맞춰야 하지만 많은 이들이 순발력과 동체시력을 이용해 검색을 활용하는 모양이다.

실제로 이 퀴즈쇼의 동시접속 인원은 적게는 6만 명에서 많게는 10만명이 넘어가기도 한다. 그래서인지 자연스럽게 이 퀴즈가 진행되는 15분정도의 짧은 시간동안, 퀴즈에 나온 문제와 관련된 검색어가 네이버 인기검색어에 올라갈 때가 있다. 자, 이제 위의 스크린샷 속 2018년 10월 10일 오후에, 이 퀴즈쇼가 시작됬다고 가정해보자. 1번 문제가 ‘2018 지방선거가 치뤄지는 월은 몇 월인가?’ 이다. 10만 명 중 1만명이 동시에 ‘지방선거’를 검색해서 ‘명성교회’를 제치고 검색어 1위로 올라갔다. 3초라는 제한시간때문에 당황한 5천명 정도의 사람은 얼떨결에 ‘달력’을 검색해버려서 달력이 검색어 7위에 올랐다. 뒤이어 서태지와 양현석이 속해있던 그룹의 이름을 묻는 문제가 나오자 8천명이 ‘서태지’를 검색했다.

이 퀴즈쇼에 참여하지 않은 사람들은 지방선거와 서태지, 그리고 달력이 왜 갑자기, 매우 뜬금없이 실시간 검색어에 올랐는지 어리둥절할 것이다. 평소에 이 퀴즈쇼에 참여해본 경험이 있는 이들 중 일부는 ‘뜬금없이 올라오는걸 보니 퀴즈쇼에 관련 문제가 나왔나?’ 생각할지도 모르지만, 인기검색어 순위만 가지고 이렇게 표면적으로 드러나지 않는 연관성, 그리고 그 배경에 있는 현상 (이 경우는 퀴즈쇼)를 짚어내기는 어렵다.

만일 이 모든 검색어 데이터를 시간대별로 소유하고 있다면, 퀴즈쇼가 진행되는 시간을 기점으로 전후 한시간동안, 갑자기 등장했다가 사라진 검색어들을 중심으로 골라내어 퀴즈쇼에 어떤 문제가 나왔는지 추론할 수 있지 않을까?

앞서 이야기한 것은 하나의 예시일 뿐이지만, 일단 급상승 검색어의 데이터를 시간대별로 긁어오면 유용하고 재미있는 분석을 많이 할 수 있을것만 같은 기분이었다.

어디부터 시작해볼까?

일단 왠지 자체적으로 데이터를 소유하고 관리하고 있기 때문에 (= 웹상에 그냥 떠돌아다니는 정보가 아니기에) API 를 통해 접근 권한을 줄 것 같은 느낌은 들었다. 그래도 혹시, url 주소를 통해 접근해서 html 을 긁어올 수 있지 않을까 하는 생각해 시도는 해 보았다. 위의 스크린샷 상단을 보면, url이 다음과 같이 되어있는 것을 볼 수 있다.

‘https://datalab.naver.com/keyword/realtimeList.naver?’

까지는 데이터랩의 실시간 급상승 검색어 데이터를 조회하는 페이지로 이어지고, 뒤의 datetime에 내가 설정한 시간대가 나온다. 그럼 Python을 통해 저 부분만 내가 원하는 시간대들로 대체해주고, 내가 원하는 시간대의 검색어 순위를 보여주는 url을 손쉽게 생성할 수 있다는 말이다. 여기서 문제는, 저 url을 통해 정말 깔끔하게 접근이 되느냐 하는 것이다.

Python의 Beautifulsoup 과 urllib 의 request를 사용해 한번 url에 접근해 html을 긁어와보자. (브런치에 코드를 첨부하는 방법을 몰라 스크린샷으로 삽입하겠다)

soup을 출력해보니 html 코드로 보이는 무언가가 나왔다!

그러나…

다시 자세히보니 역시나, 접근할 수 없다는 내용을 알리는 html페이지였다.

https://developers.naver.com/main/

위 링크를 통해 Naver Developer로 가면 네이버가 공개한 각종 오픈 API 를 활용할 수 있으며, 네이버가 어떤 API 들을 제공하며 API 들 별로 가이드라인이 아주 상세하게 나와있다. 간단한 과정을 거치면 애플리케이션을 만들 수 있고, API 접근 권한을 얻을 수 있다.

그런데, 안타깝게도 실시간 / 급상승 검색어 API는 과거 지원했었지만 더 이상 지원하지 않는다고 한다..

방향 전환 – 통합 검색어 트렌드 API 활용해보기

https://developers.naver.com/docs/datalab/search/#python

통합 검색어 트렌드 API 는 공개하고 있었기에 이걸 활용해 뭔가 흥미로운 분석툴을 만들 수 있지 않을까 싶은 생각이 들어 방향을 전환하게 되었다. 이는 네이버 트렌드 (https://datalab.naver.com/keyword/trendSearch.naver) 에서 기본적으로 제공하는 기능이지만, 주제어의 갯수가 5개로 제한되어있기 때문에 일일히 검색어를 5개씩 입력하고 데이터를 따로 내려받아야 하는 불편함이 있다.

API 를 이용해 파이썬을 활용하면 무제한으로 주제어를 검색할 수 있을 뿐 아니라, 문자열 포맷팅을 통해 루프를 돌림으로써, 검색 트렌드를 알고싶은 검색어의 수가 굉장히 많은 때 (ex. 사전이나, 문서 등에 있는 단어 여러개에 대해 모두 검색어 트렌드를 긁어오고 싶을 때, 네이버 트렌드를 이용하면 일일히 수기로 검색어를 입력해야 하지만, API 와 파이썬을 활용하면 이러한 작업을 자동화 할 수 있다.)

우선, 가이드라인을 따라 코드를 작성해보면 다음과 같다.

API 를 통해 데이터 크롤링을 할 수 있는 링크를 제공해주고 있으며, request 할 때 헤더에 API 허가를 받았다는것을 승인받기 위해 정보를 추가한다.

body 부분에는 json의 데이터 형식으로 여러가지 파라미터를 설정하게 되어있다.

– 검색하고자 하는 기간

– 검색 기간의 시간 단위 (일별/주별/월별/ 설정 가능)

– 주제어와 검색어 설정

– 모바일 / PC 검색

– 성별

– 나이

등을 입력할 수 있다.

이렇게 써놓고보니 네이버 트렌드에서 기본적으로 제공하는 기능 그 이상 특별한 점은 없어보이지만, 코딩을 통해 자동화할 수 있고, 검색어의 수가 제한이 없다는 점에서 활용성은 훨씬 높을 듯 싶다. 또, 네이버 API 를 처음 활용해보는 입장에서는 좋은 출발점인 것 같다. (다음부터 네이버 API 가 제공하는 모든 기능을 하나씩 사용해보고 포스팅해볼까 한다.)

실험삼아 2017년 1월 1일부터 2019년 2월 27일까지, 주제어 및 검색어를 삼성 (Samsung) 으로, 일 간격으로 데이터를 뽑아보았다.

json 으로 되어있기에, 일련의 과정을 거쳐 DataFrame으로 만들어보도록 하겠다.

DataFrame으로 만들었다

API를 이용해 얻은 데이터로 그린 차트

플롯팅을 해서, 네이버 트렌드 서비스의 그것과 비교해보자

네이버 트렌드에서 얻은 차트

당연한 결과지만 정확히 일치하는 그래프가 나왔다.

일단 API를 이용해 검색어 트렌드를 긁어오는것에는 성공이다!

한 걸음 더

여기까지는 아직 네이버 트렌드를 이용하는 것에 비해 메리트가 전혀 없다. 그저 코드를 짜는 수고로움만 있을 뿐… 사실 애초에는 시간대별로 ‘실시간 급상승 검색어’를 크롤링하려고 시작한 일인데 API 가 지원을 하지 않기에 아쉬운대로 지원하는 API들을 활용해보자 해서 시작하게 된 일이다. 그리고 이 검색어 트렌드 API 는 다른 API 들에비해 비교적 간단하고, 연습삼아 시작하기에 좋은 시작점으로 보였다.

그래도 이왕 API 를 활용하는거, 어떻게하면 실질적으로 유용하게 활용할 수 있을까 생각해보게 되었다. 내가 당장 앱을 만든다면, 검색 트렌드를 활용하는 기능을 탑재시킬 수 있겠지만 나는 당장 앱을 개발할것도 아니고, 앞으로 리서치나 시장조사 등을 할 때 활용할만한 더 유용한 툴을 구비해놓고 싶은 정도다.

그럴 때 네이버 트렌드 자료는 매우 유용하다. 그래프로 보여줄 뿐 아니라 엑셀로 시계열 데이터를 다운받을 수도 있다. 실제로 과거에, 사회적기업과 관련된 시장조사를 하며 네이버 트렌드에서 얻은 자료를 활용한 적이 있었다.

그런데 여기에는 치명적인 걸림돌이 한가지 존재했다. 우선, 수기로 주제어와 단어를 매번 입력해주어야 한다. 이는 검색어의 수가 적을때는 괜찮지만, 주제어가 아주 많아지면 일일히 수기로 입력해야 하고, 오타가 날 가능성도 배제할 수 없게 된다.

또한, 무엇보다도 주제어 설정이 다섯 개가 최대이다. 따라서 한번에 다섯 개의 주제어에 대해서밖에 검색할 수 없으며, 엑셀로 내려받을때 역시 다섯 개씩 끊어서 엑셀 파일을 생성해야 한다. 심지어는 그래프와, 엑셀 파일 상의 수치가 ‘절대적인 수치’가 아닌, 내가 입력한 다섯 개의 주제어들의 상대적인 백분율 값으로 스케일링해서 보여주기 때문에, 엑셀 파일들 사이에 스케일 차이가 발생한다.

실제로 작년 즈음, 여러 사회적기업들에 대한 인지도를 조사하기 위한 수단 중 하나로 네이버 트렌드를 선택했었는데, 약 30개에 달하는 기관들에 관련된 검색어를 입력하다보니 7개의 엑셀 파일이 생성되었고, 각 엑셀 파일간 ‘트렌드’를 나타내는 인덱스는 다른 스케일을 가지고 있어서 함께 활용할 수가 없었다. 그래서 기준이 되는 하나의 검색어를 정해놓고, 그 검색어를 기준으로 모든 파일의 값들의 스케일링 비율을 계산해 변환해야 했다. 나는 약 30개의 검색어와 7개의 엑셀 파일에 대해 10번 남짓 한 변환만을 거치면 되었지만, 만일 검색해야 할 검색어의 수가 훨씬 많아진다면 그땐 정말 일일히 계산해서 한줄 한줄 데이터 값을 변환하는데만 며칠이 걸릴수도 있다.

그런데 파이썬과 API 를 사용하면 첫째로 검색 주제어의 갯수의 제약이 없어진다. 또, 코드를 잘만 짜면 아무리 많은 검색어에 대해서라도 ‘리스트’ 만 가지고 있다면 크롤링, 시각화, 그리고 정형화를 자동화할 수 있을 것 같았다. 프로그래밍 전공자가 아니기에 코딩 실력이 미숙하지만 한번 해보기로 했다.

입력 검색어를 여러 개, 더 편하게, 자동으로 입력할 수 있게 만들기

일단 자동화를 하려면 ‘검색하고자 하는 주제어의 리스트’ 가 있다고 가정하고, 리스트 안에 있는 검색어들에 대해 루프를 돌면서 위에서 코드로 짠 과정을 반복하는 방식이어야 할 것 같다. 문제는 네이버의 API 는, 검색어를 입력하는 파라미터가 json의 형식으로 되어있다는 점이다.

body = “{\”startDate\”:\”2017-01-01\”,\”endDate\”:\”2017-04-30\”,\”timeUnit\”:\”month\”,\”keywordGroups\”:[{\”groupName\”:\”한글\”,\”keywords\”:[\”한글\”,\”korean\”]},{\”groupName\”:\”영어\”,\”keywords\”:[\”영어\”,\”english\”]}],\”device\”:\”pc\”,\”ages\”:[\”1\”,\”2\”],\”gender\”:\”f\”}”;

이렇게, json 형식의 string으로 파라미터를 정의하게 되어 있다.

json 타입의 데이터가 나에겐 좀 낫설지만, 이리저기 만저보면서 string <> json <> dictionary 사이를 왔다갔다 하며 사용할 수 있다는 감이 왔다. 내가 알기로 json을 사용하는 이유는 자바스크립트, 파이썬 등 여러 플랫폼을 넘나들며 사용할 수 있는 데이터타입이기 때문이며, 파이썬도 자체적으로 json을 다룰 수 있도록 모듈이 제공된다. (그런데 난 왠지 파이썬에서 json을 다루는게 썩 편하지가 않다.)

일단은 위에 짠 코드에서 ‘삼성’을 검색어로 해서, 파라미터 설정 부분에 여러가지 시도를 해보자

네이버가 제공한 가이드에는 파라미터를 json 형식의 string으로 지정해줬다. 그런데 string 안에 ‘검색어’를 입력해줘야 하기 때문에 루프를 사용하거나, 자동화하기가 상당히 까다로울 것 같다. 일단 포맷팅을 사용해 검색어를 파라미터 안에 집어넣을 수 있는지 시도해봤다.

json형태이더라도 어쨌든 python string이기때문에 포맷팅을 하더라도 문제없이 실행된다. 그러나, 검색어의 갯수가 고정적이지 않기때문에 keyword라고 정의한 string 안에 유연하게 검색어를 끼워넣기가 쉽지가 않다.

그래서 아예 파라미터를 dictionary 형태로 정의해주고, json.dumps와 json.loads를 이용해 스트링형태와 json을 오가며 사용할 수 있게 해보면 되지 않을까 싶었다.

body_dict에 파라미터를 딕셔너리 형태로 만들어주고, json.dumps를 이용해 이것을 json 형태인 str으로 바꿔준다. 그러면 네이버에서 제공해준 것과 똑같은 파라미터가 된다.

그럼 이제 할 일은, 딕셔너리형태의 저 파라미터를 pythonic하게 주무를 수 있도록 만드는 일이다.

이런 방식으로 코드를 짜면 될 듯 하다:

>body_dict를, keywordGroups 키만 제외하고 만들어둔다.

>body_dict 딕셔너리의 keywordGroups 키에 대응하는 value가 될 빈 리스트를 만든다. (v_list라 하겠다)

>검색하고자 하는 검색어의 리스트를 받는다. (wordlist 라 하겠다)

>wordlist 안의 모든 값 (i라고 하겠다) 에 대해 v_list의 원소로써 {“groupName” : “i”, “keywords” : [“i”]}를 추가해준다. 만일 연관 검색어나, 해당하는 사항의 트렌드와 양의 상관관계가 있을만한 키워드들을 keywords에 함께 넣어준다. (ex. 삼성과 Samsung, 삼성전자 등)

코스피 상장 주식 리스트된 종목들 트렌드 모아보기

그럼 실제로 데이터셋을 구해서 활용해보자. 나는 대한민국 대표 기업공시채널 – http://kind.krx.co.kr/corpgeneral/corpList.do?method=loadInitPage 에서 코스피 상장 기업 트렌드를 살펴보고자 데이터를 가져왔다. 데이터는 대충 이렇게 생겼다.

일단 회사명을 주제어로 입력해, 회사명을 사람들이 시기별로 얼마나 검색했는지 종목별로 살펴보는게 목표이다. 추가적으로 회사와 직접적으로 관련이 있는 대표자명, 그리고 주요제품에 포함된 단어들을 키워드로 포함시켜 볼 생각이다.

먼저 pandas DataFrame형식으로 파일을 불러와서, ‘회사명’컬럼만 따로 떼어 회사명들이 들어간 하나의 array 를 만들어준다. 그 다음 모든 회사명을 body_list의 주제어와 검색어로 설정해준다.

하이라이트 한 부분의 코드를 통해 거의 775개에 달하는 회사명을 검색어로 설정했다! 만일 네이버 트렌드를 이용했다면 5개씩 끊어 155번에 걸처, 일일히 손으로 입력했어야 했을 작업이다.

여기에 추가적으로 keywords에, 데이터셋에서 구할 수 있는 연관된 단어들을 입력함으로써 단순히 ‘회사명’의 검색 트렌드가 아닌, 그 회사와 관련된 검색 트렌드를 구체적으로 뽑아보자.

지역과 같은 정보는 너무 ‘일반적’이기 때문에 회사나 종목과 연관없는 검색결과가 더 많을 확률이 높다. 반면 대표자명은, 회사와 주식과 밀접한 연관이 있는 사유로 많이 언급되기 때문에 관련성이 있을 수 있다.

대표자명만 따로 column을 떼어 살펴보면, 대표자명의 표기법이 제각각이다. 여기서 한번 텍스트를 정제해야겠다.

자세히 살펴보면 대표자명을 표기하는데 크게 방법이 크게:

– 깔끔하게 석 자가 기재된경우 (ex. 홍길동)

– 이름의 각 글자를 띄어쓰기한경우 (ex. 홍 길 동)

– 대표자가 여러명이어서 콤마로 구분한경우 (ex. 홍길동, 김갑돌)

– 대표자가 여러명인데 콤마로 구분 + 뒤에 괄호와 함께 꼬리말이 붙은경우 (ex. 홍길동, 김갑돌 (각자 대표))

– 그외 다수

로 나뉘는데, ‘그외 다수’ 에 해당하는 기업들의 경우 극히 소수이다. 100% 정확하게 정제하는 것은 어려울 듯 싶다. 먼저 괄호와 함께, 괄호 안에 있는 ‘각자 대표이사’라는 말을 모두 제거하자.

df[“대표자명”].apply(lambda x: re.sub(r’\(.*\)’, ”, x))

이를 위해 regex (정규 표현식)을 사용했는데, 정규 표현식의 사용법이 익숙치 않아 stack overflow 를 참고했다.

그 다음으론, 이름 사이의 띄어쓰기와, 여러 명이 대표로 기재된 경우를 해결해야 한다. 언뜻 보면 ‘,’ 와 ‘ ‘ (콤마와 여백) 을 기준으로 split하면 될 것 같지만 (홍길동, 김갑돌 >>[“홍길동”, “김갑돌”], 한 사람의 이름을 모두 띄어쓴 경우가 분해되어버린다. (ex. 홍 길 동 >> [“홍”, “길”, “동”]으로 세 명이 되어버린다)

그런데 생각해보면 이름이 대부분 세 글자 혹은 두 글자이며, 한 사람의 이름이 네 글자를 넘어가는 경우가 있어도 극히 드물다. 따라서 공백을 제외한 string의 length 가 5 이상이라면 두 명 이상일 확률이, 3이하라면 한 명일 확률이 아주 높다. 이 점을 이용해 공백과 콤마를 제외한 string의 길이가 5 이상이라면 그낭 ‘ ‘ 와 ‘,’를 기준으로 split 해버리고, 그렇지 않다면 한 명으로 간주하고 regex를 활용해 모든 특수문자를 제거해 한 명의 이름으로 만들자.

df[“대표자명”].apply(lambda x: [re.compile(‘[^ㄱ-ㅣ가-힣]+’).sub(“”,x)] if len(re.compile(‘[^ㄱ-ㅣ가-힣]+’).sub(“”,x)) < 5 else re.findall(r"[\w']+", x)) 물론 100% 깔끔한 정제는 되지 않겠지만, outlier의 수는 극히 적으므로 유의미한 attribute이 되지 않을까 싶다. 이정도면 전체적으로 깔끔한 수준으로 정리되었다. 이제 다음과 같은 코드를 통해 네이버 트렌드 검색 인풋으로 회사 이름과, 대표의 이름들이 들어가게 되었다. \ 그럼 이제 과연 크롤링이 될 것인가..? 그런데 예상치 못한 request오류가 발생했다. 처음에는 파라미터 값이나, json 데이터 형식을 입력하는 코드를 잘못 짠 줄 알고 여기서 몇 시간을 헤맸다. 그러던중 혹시나 해서 입력값의 수를 5개 이하로 잡고 다시 요청을 해 봤더니 요청이 잘 된다. 네이버 트렌드 기능의 5개 요청 제한은 웹 서비스상에서 5개만 넣을 수 있도록 만든게 아니라, 애초에 요청이 5개까지밖에 안되는 거였다. 5개씩 분할 요청 및 스케일링 자동화하기 (2부에서 계속) 그렇지만 여기서 포기할 수는 없다. 여전히 5개씩 입력해야 하고, 여전히 5개단뒤로 비율을 계산해 스케일링을 해야 하지만, API와 파이썬을 이용하면 이 단순노동을 자동화할 수 있을 것 같다. 이리저리 검색해보니 나와 비슷한 생각을 가지고 활용하보는 이들이 꽤 있는것 같다. 이제 위에서 json 형식으로 만든 파라미터를 가지고, >> 755개의 input을 5개씩 끊고,

>> 5개씩 끊은 매 그룹마다 루프를 돌려 request를 통해서 트렌드 데이터를 긁어온다

>> 그 다음, ‘기준이 되는 값’에 대해 스케일링한다. 그러기 위해서는 ‘기준’은 모든 그룹에 포함시켜야 할 것이다. 예를들어 기준이 되는 ‘A’라는 회사가 첫 번째 결과에서 60이라는 수치를 출력했다고 하자. 그러면 매번 5개의 검색어 중 A를 포함시키고,

(60 / (출력된 A의 값)) * 나머지 검색어들의 값)

의 계산을 통해 스케일링을 해준다.

스케일링 과정까지 함수를 정의해 루프를 돌려준다면 순식간에 처리할 수 있을 것 같은 기분이 든다.

다만, 정확도를 위해서는 한 가지 작업이 더 필요한데, 1) 어떤 검색어를 ‘고정 검색어’ (고정값을 얻기 위해 매번 포함시킬 검색어)로 사용할 것인가 이며, 2) 고정값 수치를 설정하기 위해 함께 검색할 나머지 4개의 검색어를 어떻게 선정할 것인가 의 두 가지를 해결해야 한다.

2 번의 경우엔, 고정 검색어가 정해지면

>> 고정 검색어 + 무작위 4개의 검색어를 n번 요청한다

>> 이 때 얻어진 고정 검색어의 트렌드 인덱스 n 개의 평균을 낸다 (m이라고 하자)

>> 이제 755개의 입력값에 고정 검색어를 포함해 5개씩 검색하고, 매 번

(m/출력된 고정 검색어의 트렌드 인덱스) * 출력된 모든 검색어의 트렌드 인덱스

의 계산을 통해 스케일링 해준다. 매번 고정 검색어를 포함해야 하므로, 754 / 4 = 188.5 이니까 5개 검색어씩 묶어서 188번, 그리고 마지막 189번째 루프에서는 나머지 고정 검색어 + 나머지 2개의 검색어를 입력해주면 된다.

원래는 2부에서 다른 네이버 API 를 다뤄볼 생각이었지만, 글이 너무 길어진 관계로 나머지 부분은 2부에서 다뤄보도록 하겠다. (코딩을 하면서 글을 작성했기 때문에 과연 이 프로젝트가 성공할지는 미지수이다…)

예정인 글:

– 구글 음성인식 API를 활용한 스팸 메시지 필터 만들기

– 크라우드 펀딩 웹사이트 크롤링을 통한 펀딩 분석

– 네이버 쇼핑 & 검색 API 활용해보기

– NBA 선수 데이터 를 통한 상관관계 분석

키워드에 대한 정보 네이버 키워드 api

다음은 Bing에서 네이버 키워드 api 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 네이버 검색 API 한번에 끝내기 – 네이버 웹문서, 지식iN, 뉴스, 블로그, 책, 영화, 쇼핑 데이터 다 가져오기

  • 이수안
  • 컴퓨터
  • 연구소
  • SuanLab
  • 데이터 수집
  • Data Collection
  • 데이터 과학
  • Data Science
  • 네이버 API
  • Naver API
  • 지식iN
  • 네이버 뉴스
  • 네이버 블로그
  • 네이버 책
  • 네이버 영화
  • 네이버 쇼핑

네이버 #검색 #API #한번에 #끝내기 #- #네이버 #웹문서, #지식iN, #뉴스, #블로그, #책, #영화, #쇼핑 #데이터 #다 #가져오기


YouTube에서 네이버 키워드 api 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 네이버 검색 API 한번에 끝내기 – 네이버 웹문서, 지식iN, 뉴스, 블로그, 책, 영화, 쇼핑 데이터 다 가져오기 | 네이버 키워드 api, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  가족 생활 교육 프로그램 사례 | 4주 2 가족생활교육 216 개의 베스트 답변

Leave a Reply

Your email address will not be published. Required fields are marked *