본문 바로가기
Programming/Python

[Python] 구글 검색 API 활용하기

by 코딩하는 금융인 2023. 2. 12.

안녕하세요.

오늘은 파이썬으로 구글 검색 관련 API에 대해 공부해보는 시간을 가져보겠습니다.

 

 파이썬 구글 검색 API, pytrends & requests

▣ 구글 트렌드 API 사용하기

- 안타깝게도 Google은 일일 인기 검색 키워드에 액세스하기 위한 API를 제공하지 않습니다. Google은 비즈니스 이익을 보호하기 위해 비공개로 유지하기에 구글 트렌드 API를 활용해야 합니다.

- Google Trends API를 활용하여 시간 경과에 따른 검색어의 인기도에 대한 정보를 검색할 수 있습니다.

- 아래는 pytrends 라이브러리를 사용하여 Google 트렌드에서 검색어의 인기도, 트렌드를 알아내는 방법의 예입니다.

 

: 파이썬 pytrends

pip install pytrends
pip install plotly

- pytrends & plotly 라이브러리를 install하고 주식과 저축에 대한 검색어 트렌드를 비교해보겠습니다.

from pytrends.request import TrendReq
import plotly.express as px

# 한국어, 한국시간기준
# timezone: https://forbrains.co.uk/international_tools/earth_timezones -> KST Korea Standard Time 540
# hl = host language, tz = timezone
pytrends = TrendReq(hl='ko', tz=540)

kw_list=['주식', '저축']
# 5년간 비교
pytrends.build_payload(kw_list, cat=0, timeframe='today 5-y', geo='KR', gprop='')

# Interest Over Time
data = pytrends.interest_over_time()
interest_over_time_df = data.reset_index()

# 표 그리기
figure = px.line(interest_over_time_df, x="date", y=kw_list, title="구글 트렌드")
figure.show()

주식 & 저축 트렌드 비교

 

: 파이썬 구글 검색 상위 제목 뽑기

- 구글에서 검색하고 상위 3개 페이지 제목을 갖고 오기 위해서는 구글 검색 엔진에 request하여 구조를 받아오고 Beautifulsoup으로 parsing하는 방법이 있습니다.

import requests
from bs4 import BeautifulSoup

def get_google_search_titles(query):
    # make a GET request to the Google search page
    url = f"https://www.google.com/search?q={query}"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36"
    }
    response = requests.get(url, headers=headers)

    # parse the HTML content of the page
    soup = BeautifulSoup(response.text, "html.parser")

    # find the search result titles
    titles = [a.text for a in soup.find_all("h3", class_="LC20lb MBeuO DKV0Md")]

    # return the first 3 titles
    return titles[:3]

# example usage
query = "주식"
titles = get_google_search_titles(query)
for title in titles:
    print(title)
    
## 결과
'''
주식 - 나무위키:대문
한국 주식시장 - Investing.com
네이버 증권 - NAVER
'''

 

반응형

댓글