검색어 트렌드 비교, 분석하는 자바스크립트 만들기

안녕하세요. 지난 시간에는 네이버 검색 API를 활용하여 블로그 검색 순위를 알아봤는데요. 이번에는 네이버 데이터 랩의 API를 활용해서 검색어 트렌드를 분석해 볼게요. 기간별 검색어 트렌드를 기기, 연령, 성별 등으로 구분해서 세분화된 정보를 가져올 수 있답니다. 한번 발급받은 API는 계속 사용할 수 있으니 네이버 개발자 센터에서 받아보시길 바랍니다. (1분이면 끝!)

 

검색어 트렌드란?

검색어 트렌드는 검색량이나 인기 검색어 등을 조회하는 게 아니에요. 키워드 간의 상대적인 인기도를 확인할 수 있는 거예요. 즉 키워드의 검색량 비율을 비교해서 어떤 키워드가 더 많은 관심을 받고 있는지 검색 점유율 등을 추정할 수 있는 거죠. 시간에 따른 인기도라든가, 연령이나 성별 검색량을 비교해서 어떤 연령대와 성별에게 인기가 있는지 분석할 수 있어요.

 

아래는 네이버 데이터 랩 공식 페이지의 설명 중 일부분입니다.

검색어트렌드 설명

 

검색어 트렌드를 잘못 알고 계신 분들이 있어서 설명을 드렸는데요, 이제 하나하나씩 시작해 봅시다!

 

네이버 데이터 랩 API 발급받기

 

데이터랩 - SERVICE-API

데이터랩 통합검색어 트렌드 통합검색어 트렌드는 네이버 통합검색에서 발생하는 검색어를 연령별, 성별, 기기별(PC, 모바일)로 세분화해서 조회할 수 있는 API입니다. 분석하고 싶은 주제군을

developers.naver.com

 

위 url 접속 후 하단의 오픈 API 이용 신청 클릭 -> 다음 화면에서 Application 등록 클릭 > 그 후 입력은 아래 이미지 참고

검색어 트렌드 api발급


완료가 되었으면 Client ID와 Client Secret 키가 발급되는데 소중히 보관해 주세요. API호출 시 사용됩니다. 데이터 랩 API의 경우 하루 1,000번 호출이 가능해요. 검색 API의 25,000번에 비해 많이 부족하지만 개인이 사용하기에는 역시 충분하죠!

 

오늘도 역시 크롬에서 코드를 실행하기 위해서는 프록시 서버가 필요해요. 아래 '웹스크래핑 하는 법' 내용 중 CORS 우회 프록시 서버 글을 참고하세요. (이건 10초면 끝!) 다시 한번 말씀드리지만 API는 서버사이드 언어에 사용하는 게 일반적입니다만, 번거로운 프로그램 설치와 설정 없이 누구든 쉽게 크롬이나 엣지에서 사용하기 위해는 CORS라는 정책을 우회해야 합니다.

 

쉽게 말해서 서버에서 서버로 호출 시에는 문제없지만, 웹 브라우저에서 호출 시에는 CORS라는 에러가 발행하는 데 이를 건너띄기 위함입니다. (사실 로컬에서 서버를 띄우면 CORS 문제가 없지만 누구나 쉽게 따라 할 수 있도록 크롬 콘솔에서 하려고 합니다.)

 

자바스크립트로 웹스크래핑 하는 방법

 

자바스크립트로 웹스크래핑 하는 방법

안녕하세요. 오늘은 자바스크립트(JavaScript)로 웹 스크래핑(Web Scraping) 하는 방법에 대해 알아볼 거예요. 웹 스크래핑이란 웹 페이지에 있는 정보를 추출하는 과정이에요. 웹페이지는 HTML로 작성

toyou101.tistory.com

 

자 이제 모든 준비가 완료되었습니다. 먼저 3월의 일별 키워드 트렌드를 조회하는 함수를 만들어볼게요!
*클라이언트 ID와 시크릿키는 위에서 발급받은 걸로 넣어주세요.

// 네이버 데이터랩 API 클라이언트 ID와 시크릿 입력
const CLIENT_ID = "YOUR_CLIENT_ID";
const CLIENT_SECRET = "YOUR_CLIENT_SECRET";

// CORS를 우회하기 위한 프록시 서버 URL
const proxyURL = "https://cors-anywhere.herokuapp.com/";

// 네이버 데이터랩 API URL
const baseURL = "https://openapi.naver.com/v1/datalab/search";

// API 요청 헤더를 설정
const headers = new Headers({
  "Content-Type": "application/json",
  "X-Naver-Client-Id": CLIENT_ID,
  "X-Naver-Client-Secret": CLIENT_SECRET,
});

// 검색어 트렌드를 조회하는 함수 생성
async function searchKeyword(keywords, timeUnit, startDate, endDate) {
    // 데이터를 전송할 때 사용할 요청 본문을 생성
	const requestBody = JSON.stringify({
	  startDate: startDate, //조회 시작 일자
	  endDate: endDate,     //조회 종료 일자 
	  timeUnit: timeUnit,   //기간 단위(일별,월별)
	  keywordGroups: keywords.map((keyword, index) => ({ //배열로 받은 키워드를 하나씩 넣는다
		groupName: `group${index + 1}`,  //아래 키워드의 그룹명
		keywords: [keyword], //조회할 키워드 (최대 20개까지 배열로 입력 가능)
	  })),
	});

  try {
    // 프록시 서버를 사용하여 네이버 데이터랩 API에 요청
    const response = await fetch(proxyURL + baseURL, {
      method: "POST",
      headers: headers,
      body: requestBody,
    });

    if (!response.ok) {
      throw new Error("네이버 데이터랩 API 요청 실패");
    }

    // 응답을 JSON 형태로 변환
    const data = await response.json();

    // 데이터 출력
    console.log("결과 데이터:", data);
  } catch (error) {
    console.error("API 요청 중 에러 발생:", error);
  }
}

 

차례대로 검색 키워드, 기간 단위, 검색 시작일, 검색 종료일을 받는 searchKeyword() 함수를 생성했습니다. 이제 실행해 봅시다!

searchKeyword(['웅남이','소울메이트'], "date","2023-03-01", "2023-03-22")

 

실행 결과 ▼

검색어트렌드 실행
함수를 생성하고

 

검색어트렌드 실행 결과1검색어트렌드 실행 결과2
searchKeyword() 실행

 

키워드로 현재 상영 중인 한국 영화 '웅남이'와 '소울메이트'를 넣어서 일별 검색어 트렌드를 받아왔어요. 시간이 지날수록 웅남이의 관심이 높아지고 있네요! 검색어 트렌드는 이렇게 시간에 따른 검색어 트렌드를 비교할 수 있는 API에요.

 

이번엔 다른 주제를 월별로 조회해 볼게요! 월별로 조회하려면 기존의 'date'가 아닌 'month'로 넣고 날짜도 월 단위로 입력해야 돼요.

searchKeyword(['강원도','제주도'], "month", "2022-10-01", "2023-03-23")

 

실행 결과 ▼

검색어트렌드 실행 결과3

 

강원도와 제주도의 월별 검색어 트렌드를 조회해 봤는데요, 음.. 제가 예상했던 결과와 많은 차이가 있네요. 날이 이 풀리면서 강원도의 관심이 많아질 줄 알았지만 제주도가 훨씬 더 높은 관심도를 가지고 있어요. 성별이나 연령을 추가해 보면 또 다른 결과가 나올 거 같은데 여러분이 한번 해보시는 것도 좋을 거 같네요. 성별, 연령별 조회 팁은 알려드리고 갈게요!

	const requestBody = JSON.stringify({
	  startDate: startDate, //조회 시작 일자
	  endDate: endDate,     //조회 종료 일자 
	  timeUnit: timeUnit,   //기간 단위(일별,월별)
	  keywordGroups: keywords.map((keyword, index) => ({ //배열로 받은 키워드를 하나씩 넣는다
		groupName: `group${index + 1}`,  //아래 키워드의 그룹명
		keywords: [keyword], //조회할 키워드 (최대 20개까지 배열로 입력 가능)
	  })),
        gender: "f", // 성별 설정: "f"는 여성, "m"은 남성, 생략하면 전체 성별
        ages: ["1", "2", "3"] // 연령 설정: "1"은 10대, "2"는 20대, "3"은 30대,
	});

 

 

오늘은 이렇게 네이버 데이터 랩 API를 활용해서 다양한 검색어 트렌드를 살펴봤어요. 여러분이 관심 있는 키워드와 비교하면서 시간이 지남에 따라 트렌드가 어떻게 변화하는지 관찰하는 것도 재미있을 거 같네요!- 끝 -