[Pytrends]구글 트렌드 API

포동동·2022년 12월 22일
0
post-thumbnail

구글 크롤링은 똑똑하게 하구 싶다구9️⃣

개인 프로젝트 중에 구글, 네이버와 같은 사이트들을 크롤링 해야하는 일이 생겼다. 네이버야 api로 제공하던 많은 부분들을 제한해와서 결국 bs4로 크롤링하기로 했지만, 구글은 그래도 뭔가 더 주지 않을까...! 해서 찾아본 결과, 한 오픈소스 라이브러리를 발견했다. 그거시 바로 Pytrends!!


Pytrends란🤷‍?

  • 구글 트렌드 데이터를 가져오는 데 사용되는 파이썬 라이브러리
  • Github

장점👍

  • 우선 크롤링보다 빠르다는 것은 당연하겠고
  • 지역, 언어, 시간 등을 설정해서 데이터를 불러올 수 있기 때문에 편리
  • 반환을 데이터프레임으로 해주기 때문에 데이터 처리할 때 굉장히 편하다!
  • 구글에서 api로 받아오는 것이 아니기 때문에 제한이 없다.
  • 다만 unofficial이기 때문에 주의할 필요가 있다.

이번 포스팅에서는 pytrends의 모든 기능을 다뤄볼 예정이다.


0️⃣ 준비

# install
pip install pytrends # 파이썬은 3.3 이상부터 / requests, lxml, pandas도 추가로 필요하다. 

# connect
from pytrends.request import TrendReq
pytrends = TrendReq(hl='ko', tz=540) # hl=host language, tz=time zone

# setting
kw_list = ["애플파이", "에그타르트", "슈크림"] # 단 게 땡기니까 달달구리구리한 것들로 키워드 리스트 생성
pytrends.build_payload(kw_list, cat=0, 
						timeframe='2022-12-01 2022-12-7', 
                        geo='KR', gprop='') # 데이터를 불러올 객체를 build 해준다. 
  • build_payload 파라미터

    • keyword : 리스트 형태여도 되고 string 하나여도 된다. 다만, 키워드는 되도록 자세하게 적어주는 게 좋다. 만약 어떤 키워드가 적당한지 모르겠으면, get_suggestions()를 통해 더 자세한 키워드를 추천받을 수도 있다.
    • cat : 카테고리를 좁혀줄 수 있다. 0은 모든 카테고리, 깃헙에서 숫자를 확인하고 넣어주면된다. ex) 애니메이션 영화로 좁히고 싶으면 cat=1104
    • timeframe : 검색 시작날짜와 종료날짜. default는 today 5-y(5년전부터 오늘까지). 구체적으로 쓸 수도 있다. ex) '2016-12-14 2017-01-25'. 타임설정은 정해놓은 포맷이 있기 때문에 꼭 깃헙을 확인해야 한다.
    • geo : 지역
    • gprop : 이미지, 뉴스, 유튜브, froogle(구글쇼핑)으로 세분화할 수도 있다. default는 그냥 구글 검색.

자 이제 모든 준비는 끝났다. 하나씩 불러와보자.


💨 본격적인 데이터 탐색

# 설정한 기간 동안 설정한 트렌드 지수
data = pytrends.interest_over_time()

timeframe을 여러개로 나누고 각각의 기간들에서의 검색 트렌드를 비교해주는 메서드도 있는데, 왜인지 안 된다. 만약 된다면 pytrends.multirange_interest_over_time()를 쓰면 된다.


# 정해진 기간 기간 동안 정한 시각마다 트렌드 지수
pytrends.get_historical_interest(
  								kw_list, 
  								year_start=2022, month_start=1, day_start=1, hour_start=0,
  								year_end=2022, month_end=12, day_end=10, hour_end=0, 
  								cat=0, geo='', gprop='', sleep=0
  								)


# 지역별 트렌드 지수
pytrends.interest_by_region(
  							resolution='COUNTRY', # 시, 나라, 지하철..?, 지역 레벨로 설정 가능
  							inc_low_vol=True, # 검색량이 많지 않은 지역도 포함할건지
  							inc_geo_code=True # 국가명하고 iso코드 같이 표시할건지
  							) 


# 관련된 쿼리들을 인기순과 급상승순으로 딕셔너리에 담아 반환한다. 
dic = pytrends.related_queries() 
dic['애플파이']


# 오늘+어제 급상승 검색어 상위 20개까지 반환
pytrends.trending_searches(pn='south_korea') 
  
# 실시간 트렌드 키워드 반환(시간 단위인 듯 하다)
pytrends.realtime_trending_searches(pn='US') # 근데 한국은 안 됨; 



# 연도별 키워드 종합 트렌드 순위  
pytrends.top_charts(2021, hl='ko', tz=540, geo='KR')

단, 연도별로만 검색 가능하다.



💪 마무으리

전체적으로 써보았을 때 다양한 데이터를 손쉽게 가져올 수 있다는 장점은 있으나, 내가 원하던 정보들은 결국 크롤링을 해야된다는 결론을 얻었다😢. 간단하게 구글 키워드 트렌드만 가져다 쓸 때는 유용한 라이브러리가 될 수도 있겠다.

깃헙

profile
완료주의

0개의 댓글