한줄공지
  • 등록된 공지내용이 없습니다.

Pytrends로 구글 트렌드 데이터 수집하기

2025년 7월 24일
조회수 11
코멘트 0

목차

구글 트렌드 웹사이트에서 매번 수동으로 데이터를 확인하는 건 비효율적입니다. 코드를 통해 자동화된 방식으로 트렌드 데이터를 수집하는 것이 훨씬 효율적이죠. 오늘은 Pytrends 라이브러리를 사용해서 구글 트렌드 API를 활용하는 방법을 정리해보겠습니다.

Pytrends란?

구글에서 공식 트렌드 API를 제공하지 않기 때문에 만들어진 비공식 라이브러리입니다. 하지만 안정적이고 사용하기 쉬워서 많은 개발자들이 활용하고 있습니다. 웹 크롤링보다 훨씬 간편하고 신뢰성이 높습니다.

환경 설정

설치

pip install pytrends

Python 3.3 이상에서 동작하며, requests, lxml, pandas가 의존성으로 함께 설치됩니다.

기본 설정

from pytrends.request import TrendReq

# 한국어, 한국 시간대로 설정
pytrends = TrendReq(hl='ko', tz=540)

Payload 구성

# 분석할 키워드 리스트
kw_list = ["Python", "JavaScript", "React", "Vue", "Angular"]

# 요청 객체 빌드
pytrends.build_payload(
    kw_list, 
    cat=0,                           # 카테고리 (0: 전체 카테고리)
    timeframe='2023-01-01 2023-12-31',  # 검색 기간
    geo='KR',                        # 지역 코드
    gprop=''                         # 검색 속성 (기본: 웹검색)
)

주요 기능

1. 시계열 트렌드 데이터

# 기간별 트렌드 변화 데이터
df = pytrends.interest_over_time()
print(df.head())

# isPartial 컬럼 제거 (데이터 완성도 플래그)
df = df.drop('isPartial', axis=1)

2. 시간별 상세 데이터

# 시간 단위 세부 분석
historical = pytrends.get_historical_interest(
    kw_list,
    year_start=2023, month_start=12, day_start=1, hour_start=0,
    year_end=2023, month_end=12, day_end=31, hour_end=23,
    cat=0, geo='KR', gprop='', sleep=1  # 요청 간격 조절
)

3. 지역별 관심도 분석

# 지역별 검색 관심도
region_df = pytrends.interest_by_region(
    resolution='COUNTRY',    # 국가별 분석
    inc_low_vol=True,       # 검색량이 적은 지역 포함
    inc_geo_code=True       # 지역 코드 표시
)
print(region_df.sort_values('Python', ascending=False).head())

4. 연관 검색어 분석

# 관련 키워드 딕셔너리
related = pytrends.related_queries()

# 특정 키워드의 연관 검색어
print("Python 관련 인기 검색어:")
print(related['Python']['top'])

print("
Python 관련 급상승 검색어:")
print(related['Python']['rising'])

5. 실시간 트렌드

# 한국 급상승 검색어 상위 20개
trending = pytrends.trending_searches(pn='south_korea')
print("현재 급상승 검색어:")
print(trending.head(10))

# 실시간 트렌드 (미국만 지원)
# realtime = pytrends.realtime_trending_searches(pn='US')

6. 연간 인기 키워드

# 특정 연도 인기 키워드
yearly_trends = pytrends.top_charts(2023, hl='ko', tz=540, geo='KR')
print(yearly_trends.head())

실전 활용 예제: 프론트엔드 프레임워크 트렌드 분석

import matplotlib.pyplot as plt
import seaborn as sns
from pytrends.request import TrendReq

# 초기 설정
pytrends = TrendReq(hl='ko', tz=540)

# 프론트엔드 프레임워크 비교
frameworks = ["React", "Vue.js", "Angular", "Svelte"]
pytrends.build_payload(frameworks, timeframe='2020-01-01 2024-01-01', geo='')

# 트렌드 데이터 수집
trend_data = pytrends.interest_over_time().drop('isPartial', axis=1)

# 데이터 시각화
plt.figure(figsize=(15, 8))
sns.lineplot(data=trend_data, linewidth=2.5)
plt.title('Frontend Framework Trends (2020-2024)', fontsize=16, fontweight='bold')
plt.xlabel('Date')
plt.ylabel('Search Interest')
plt.legend(title='Framework')
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()

# 최근 6개월 평균 관심도 분석
recent_avg = trend_data.tail(180).mean().sort_values(ascending=False)
print("최근 6개월 평균 검색 관심도:")
print(recent_avg)

고급 활용 방법

1. 배치 처리를 통한 다중 키워드 분석

import time

def analyze_keyword_groups(keyword_groups, timeframe='today 12-m'):
    """여러 키워드 그룹을 배치로 처리하는 함수"""
    results = {}
    
    for group_name, keywords in keyword_groups.items():
        try:
            pytrends.build_payload(keywords, timeframe=timeframe, geo='KR')
            data = pytrends.interest_over_time()
            if not data.empty:
                results[group_name] = data.drop('isPartial', axis=1)
        except Exception as e:
            print(f"Error processing {group_name}: {e}")
        
        time.sleep(1)  # Rate limit 방지
    
    return results

# 사용 예시
keyword_groups = {
    'programming_languages': ['Python', 'JavaScript', 'Java', 'C++'],
    'web_frameworks': ['React', 'Vue', 'Angular', 'Svelte'],
    'databases': ['MySQL', 'PostgreSQL', 'MongoDB', 'Redis']
}

results = analyze_keyword_groups(keyword_groups)

2. 키워드 제안 기능

# 키워드 추천 받기
suggestions = pytrends.suggestions('machine learning')
print("추천 키워드:")
for i, suggestion in enumerate(suggestions[:5]):
    print(f"{i+1}. {suggestion['title']} (type: {suggestion['type']})")

3. 안전한 요청 처리

import time
from requests.exceptions import RequestException

def safe_trend_request(keywords, max_retries=3):
    """재시도 로직이 포함된 안전한 트렌드 요청"""
    for attempt in range(max_retries):
        try:
            pytrends.build_payload(keywords, timeframe='today 12-m', geo='KR')
            return pytrends.interest_over_time()
        except RequestException as e:
            print(f"요청 실패 (시도 {attempt + 1}/{max_retries}): {e}")
            if attempt < max_retries - 1:
                time.sleep(2 ** attempt)  # 지수 백오프
            else:
                raise
        except Exception as e:
            print(f"예상치 못한 오류: {e}")
            return None

4. 자동화된 트렌드 모니터링

from datetime import datetime
import pandas as pd

def create_trend_report(keywords, output_file=None):
    """트렌드 리포트 자동 생성"""
    pytrends.build_payload(keywords, timeframe='today 12-m', geo='KR')
    
    # 기본 트렌드 데이터
    trend_data = pytrends.interest_over_time()
    
    # 지역별 데이터
    region_data = pytrends.interest_by_region()
    
    # 연관 검색어
    related_queries = pytrends.related_queries()
    
    # 리포트 생성
    report = {
        'generated_at': datetime.now(),
        'keywords': keywords,
        'trend_data': trend_data,
        'top_regions': region_data.head(10),
        'related_queries': related_queries
    }
    
    if output_file:
        pd.to_pickle(report, output_file)
    
    return report

실무 활용 팁

Rate Limiting 관리: 구글은 요청 빈도를 제한하므로 time.sleep()을 활용해 적절한 간격을 두는 것이 중요합니다.

키워드 최적화: 모호한 키워드보다는 구체적인 키워드를 사용하는 것이 더 정확한 결과를 얻을 수 있습니다. get_suggestions() 메서드를 활용해보세요.

데이터 해석: 트렌드 점수는 0-100 범위의 상대적 값입니다. 절대적인 검색량이 아님을 유의해야 합니다.

지역 코드: ISO 국가 코드('KR', 'US', 'JP' 등)를 정확히 사용해야 올바른 데이터를 얻을 수 있습니다.

에러 핸들링: 네트워크 이슈나 API 제한으로 인한 오류에 대비해 적절한 예외 처리를 구현하는 것이 좋습니다.

마무리

Pytrends는 구글 트렌드 데이터를 프로그래밍 방식으로 수집할 수 있게 해주는 실용적인 도구입니다. 수동 작업을 자동화하고, 정기적인 트렌드 모니터링 시스템을 구축하는 데 매우 유용합니다.

SEO 분석, 마케팅 리서치, 또는 데이터 기반 의사결정이 필요한 프로젝트에서 이 라이브러리를 활용하면 효율성을 크게 높일 수 있을 것입니다.

안정적이고 저렴한 가상 서버(VPS) 안내

안정적인 서버 호스팅을 찾고 계신가요? 지금 Vultr 호스팅을 한번 이용 해 보세요. 지금 보고 계신 HaruLogs 사이트도 Vultr에서 VPS 호스팅 하고 있습니다. 한국, 일본, 미국등 다양한 국가에 클릭 몇번으로 안정적이고 저렴한 VPS를 운영 할 수 있습니다.

아래 배너를 통해 회원 가입을 하시면 100달러의 무료 크레딧을 받을 수 있습니다. 100달러의 무료 크레딧은 Vultr의 최소 사양 VPS를 20대 동시 운영가능한 크레딧입니다.

지금 무료로 Vultr $100 크레딧 선물 받기

 

Vultr 서비스 요약

  • VPS
    • 인스턴스
      • AMD 또는 Intel High Performance 인스턴스 최저 $6 - 1vCPU, 1GB Memory, 2TB Bandwidth, 25GB NVMe
    • 엣지
  • Block Storage
  • Object Storage (AWS S3 호환)
  • Firewall
  • Network
  • Load Balancers
  • Kubernetes
  • Databases
포스트 통계
지금 보고있는 포스트의 통계 데이터를 확인 해 보세요.
  • 총 조회수
    12
  • 최근 30일 조회수
    12
연관 포스트
코멘트 작성