구글 트렌드 봇 -1

2023. 4. 29. 22:58프로젝트/구글 트렌드 봇

인사이트나 데이터 셋을 만들기 가장 좋은 것은 직접 수집하는 것이다.

내가 형식을 설정할수도 있고, 내 입맛에 맞는 정보들을 얻을 수 있기 때문이다.

또한 남의 영향을 덜 받는다.

 

한국에서 그나마 가장 중립적인 시선이 구글 실시간 검색 같아. 구글 트렌드를 크롤링 하여 데이터셋으로 모아보기로 하였다.

 

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

url = "https://trends.google.co.kr/trends/trendingsearches/daily?geo=KR&hl=ko"

chrome_driver_path = 'path/to/chromedriver'

driver = webdriver.Chrome()
driver.get(url)

구글트렌드 진입.

크롤링 하고 싶은 요소는 

날짜, 트렌드 제목, 요약(기사 요약), 검색횟수, 링크(기사 링크).

 

하나의 date 에 따라 class = "feed-list-wrapper" 로 크롤링하게 편하게 묶여있다. 역시 구글?

 

첫 해결 문제는

3일 정도밖에 나와있지않고 더 로드하기를 눌러야 이전 날들 하나씩 로드가 된다.

 

for i in range(30):
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(1)
    load_more_button = driver.find_element(By.CLASS_NAME, "feed-load-more-button")
    load_more_button.click()
    time.sleep(2)

더 로드하기  버튼의 클래스 명이 "feed-load-more-button". 캬. 매우 직관적

로드를 무제한적으로 제공하는 것이아니라 약 30일까지만을 제공하기에 30번의 반복을 주어 실행해 웹에 모든 데이터를 로드해 놓는다.

 

로드의 끝.

한달 전에는 페이코인이 실시간 검색이였구나... 예전에 페이코인으로 bbq나 피자를 시켜먹었는데...

확실히 트렌드를 데이터셋화 해놓으면 흐름이 보일것 이라는 생각에 확신이 든다.

 

 

feed-list-wrapper 로 그 날의 요소를 다 찾아 리스트로 만들고

그안에서 제목, 요약, 검색수, 링크를 다 찾는다.

 

dates = driver.find_elements(By.CLASS_NAME,"content-header-title")
trend_list = []
for i in range(len(dates)):
    temp = [dates[i].text]
    dates = driver.find_elements(By.CLASS_NAME,"content-header-title")
    day_data = driver.find_elements(By.CLASS_NAME,"feed-list-wrapper")
    day_titles= day_data[i].find_elements(By.CLASS_NAME,"title")
    day_summarise = day_data[i].find_elements(By.CLASS_NAME,"summary-text")
    day_search_counts = day_data[i].find_elements(By.CLASS_NAME,"search-count-title")
    for j in range(len(day_titles)):
        temp2 = [
                day_titles[j].text, 
                day_summarise[j].text, 
                day_search_counts[j].text,
                (driver.find_elements(By.CSS_SELECTOR, "div.summary-text > a")[j]).get_attribute("ng-href")
                ]
        temp.append(temp2)
    trend_list.append(temp)

이중 for 반복문이라 아쉽지만 나중에 개선해보기로 하고,

[

  ['date1', [트렌드1,요약1,검색수1,링크1],...date1의 개수만큼...]

  ['date2', [트렌드2,요약2,검색수2,링크2],...date2의 개수만큼...]

  ...]

이런 삼중 리스트 형태의 리스트로 구글 트렌드를 크롤링하였다.

 

 

 

다음 목표는 이를 dataframe 화 해서 보기 좋게 정리하는것.

728x90

'프로젝트 > 구글 트렌드 봇' 카테고리의 다른 글

window, wsl 차이? Chrome, Chromium 차이?  (0) 2023.05.13
구글 트렌드 봇 -3  (0) 2023.05.10
구글 트렌드 봇 -2  (0) 2023.05.08