구글 크롤링은 똑똑하게 하구 싶다구9️⃣
개인 프로젝트 중에 구글, 네이버와 같은 사이트들을 크롤링 해야하는 일이 생겼다. 네이버야 api로 제공하던 많은 부분들을 제한해와서 결국 bs4로 크롤링하기로 했지만, 구글은 그래도 뭔가 더 주지 않을까...! 해서 찾아본 결과, 한 오픈소스 라이브러리를 발견했다. 그거시 바로 Pytrends!!
이번 포스팅에서는 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')
단, 연도별로만 검색 가능하다.
💪 마무으리
전체적으로 써보았을 때 다양한 데이터를 손쉽게 가져올 수 있다는 장점은 있으나, 내가 원하던 정보들은 결국 크롤링을 해야된다는 결론을 얻었다😢. 간단하게 구글 키워드 트렌드만 가져다 쓸 때는 유용한 라이브러리가 될 수도 있겠다.