Googleトレンドの情報をPythonのAPIで 取得・グラフ化する方法
Webマーケティング

Googleトレンドの情報をPythonのAPIで取得・グラフ化する方法

         

Googleトレンドは便利だけど…

ブログ記事やYouTube動画を作成する際や、世の中のトレンドを把握する際に利用されるGoogleトレンド。


記事作成に当たって多くの方が活用していますが、キーワードごとにレポートをダウンロードしなければならなかったり、せっかくブラウザ上でグラフとして可視化されているデータはダウンロードするとCSV形式に。ローカルで再現しようものなら手作業で作らなくてはいけません。

要は、Googleトレンド自体は便利なものの使い勝手があまり良くないのです。キーワードの順位や上位表示の記事を自動化するソフトはありふれていますが、同じようにGoogleトレンドの情報取得や可視化を自動化することは出来ないでしょうか?

という訳で今回は複数のキーワードを一度に検索ボリュームをグラフ化と、CSVファイルをダウンロード、
更に、指定した検索キーワードのサジェストも自動で取得し、SEO記事の参考になる情報を取得するまでを行うプログラムを、APIとPythonで作ってみたいと思います。

今回は『家電製品に関する情報を扱うブログで各カテゴリの記事を効果的に投稿するため、それぞれのキーワードの検索数が増加する時期や関連キーワードを把握する』という前提の下、以下キーワードのトレンドをグラフ化してみたいと思います。

  • 乾燥機
  • 冷蔵庫
  • エアコン
  • テレビ
  • 体重計

使用するライブラリの紹介(pytrends)

今回はpytrendsというライブラリを使います。pytrendsはGoogle非公式ではありますが、Googleのトレンド情報を取得するライブラリです(なお非公式なので、将来的にGoogleの仕様変更等によって今回のコードで取得出来なくなる可能性があります)。

インストールコマンド

pip install pytrends

pytrendsで取得出来る情報

  • 注目が高まっているもの
  • 小区域別のインタレスト
  • 関連情報
  • 関連キーワード
  • 年度別急上昇ランキング
  • 検索サジェスト
  • カテゴリ内容の取得

以上の項目を、一度に最大5キーワードまで調査することができます。Webマーケターや、個人ブロガーにとってとても重要な機能と言えますね。

PythonはVS Codeやコマンドプロンプトでも実行ができますが、今回は表を出す必要があるので「Anaconda」の「Spyder」というツールが必要になります。

既にライブラリを使ったプロダクトを作成する段階の方には今更な情報ですが、Anacondaはデータ分析や人工知能技術の活用に欠かせないツールです。今回こちらをインストールしておきましょう。

コードの紹介

from pytrends.request import TrendReq
import pandas as pd
import matplotlib
matplotlib.rc('font', family='BIZ UDGothic')
import requests
from lxml import etree

fileName = r"C:\パス\Google検索年間ボリューム一覧.csv"

#タイムゾーンとキーワード設定
pytrends = TrendReq(hl='ja-JP', tz=540)
kw_list =["乾燥機", "冷蔵庫","エアコン","テレビ","体重計"]

#データ作成
pytrends.build_payload(kw_list, cat=0, timeframe='2021-01-01 2021-12-31', geo='JP', gprop='')

#データ取得
df = pytrends.interest_over_time()
 
#取得データをグラフ化
df.plot(figsize=(15, 3), lw=.7)

for kw in kw_list:
   google_r = requests.get("http://www.google.com/complete/search",
                 params={'q':kw,
                         'hl':'ja',
                         'ie':'utf_8',
                         'oe':'utf_8',
                         'output': 'toolbar'})

   google_root = etree.XML(google_r.text)
   google_sugs = google_root.xpath("//suggestion")
   google_sugstrs = [s.get("data") for s in google_sugs]

   google_suglist = []

   for ss in google_sugstrs:
       google_suglist.append(ss)
       print(ss)

上記のソースで実行すると、ツール上にサジェストとグラフが表示され、CSVファイルも保存されます。
表示されたグラフはpng画像として保存できます。

コードの解説

では各コードを解説していきます。

Pandas等、ライブラリのインストール

from pytrends.request import TrendReq
import pandas as pd
import matplotlib
matplotlib.rc('font', family='BIZ UDGothic')
import requests
from lxml import etree

fileName = r"C:\パス\Google検索年間ボリューム一覧.csv"

今回インストールしたライブラリに合わせ、データを扱うのに必要なpandasやグラフの表示に必要なmatplotlibをインストールします。
matplotlibをインストールしている一行下の文は、グラフ内の文字を日本語に対応させるための方法です。
requestsとlxmlはサジェスト取得に使います。

タイムゾーンとキーワードの設定

pytrends = TrendReq(hl='ja-JP', tz=540)
kw_list =["乾燥機", "冷蔵庫","エアコン","テレビ","体重計"]

TrendReq(hl='ja-JP', tz=540)では日本の情報を取得するために必要な記述で、tz=540に関してはUTCからの時差を分単位にしたものです。
TrendReqに設定した情報はGoogleに送信します。

kw_list には最大五個までキーワードを格納できます。

データの作成・取得・グラフへの出力

#データ作成
pytrends.build_payload(kw_list, cat=0, timeframe='2021-01-01 2021-12-31', geo='JP', gprop='')
#データ取得
df = pytrends.interest_over_time()
 
#取得したデータをグラフ化
df.plot(figsize=(15, 3), lw=.7)

cat=0では取得するデータのカテゴリーを絞ることができ、0は全てのカテゴリーを取得します。

Google Trends Categories · pat310/google-trends-api Wiki
An API layer on top of google trends. Contribute to pat310/google-trends-api development by creating an account on GitHub.

他のカテゴリーを選択する際は上記のURLを参考にしてください。

df = pytrends.interest_over_time()で時系列のデータを取得し、df.plot(figsize=(15, 3), lw=.7)で画像ファイルでグラフが生成されます。
生成された画像はpng形式でダウンロードできます。

サジェストの取得

for kw in kw_list:
   google_r = requests.get("http://www.google.com/complete/search",
                 params={'q':kw,
                         'hl':'ja',
                         'ie':'utf_8',
                         'oe':'utf_8',
                         'output': 'toolbar'})

   google_root = etree.XML(google_r.text)
   google_sugs = google_root.xpath("//suggestion")
   google_sugstrs = [s.get("data") for s in google_sugs]

   google_suglist = []

   for ss in google_sugstrs:
       google_suglist.append(ss)
       print(ss)

グラフを生成した後はサジェストを取得してきます。

pytrendsのサジェスト取得をfor文で一個づつ各キーワードのサジェストを取得してこようとしましたが、Googleからのエラー文が出てきます。

下記ソースでキーワードを一個だけ設定したところ、サジェストを取得できました。

pytrendsで取得する場合は一個ずつやる必要があるので、グラフを表示するソースコードとは別のpyファイルに記述しましょう。 グラフを出して一気にサジェストを表示させたい場合は、上記のソースを利用してください。

from pytrends.request import TrendReq
 
pytrends = TrendReq(hl='ja-JP', tz=-540)

keyword = "乾燥機"
kw_list = [keyword]
 
pytrends.build_payload(kw_list, timeframe='2019-01-01 2019-12-31', geo='JP')
 
df = pytrends.related_queries()
print(df[keyword]['top'].head(25))
print(df[keyword]['rising'].head(25))

keywordにキーワードを格納し、kw_listリスト型として入れなおします。

pytrends.build_payloadでデータを取得してきます。

pytrends.related_queries()で関連キーワードを取得してきます。

topで上位25件の検索候補を、risingで急上昇の検索候補を取得できます。

最大25件までの取得となります。

実際にグラフ可視化&CSVを出力してみる

日本語対応させないと、グラフの文字が“□”と文字化けしてしまいます。

日本語対応させると問題なく認識できます。

サジェストは10件表示されます。

pytrendsで取得したサジェストは下記です。

CSVファイルは一年分書き出されています。

今回取得した中でも特に変動が大きかったのがエアコンのトレンドでした。

エアコンは5月から9月にかけて検索数が増えているので、もしエアコンの記事を執筆する場合は気温が暑くなる前の4月から5月に執筆をするとタイミングがいいですね。

テレビに関しては昨年オリンピックがあったので、夏前に一度上がっていると推測できます。

今回は家電を例に取得しましたが、他にも就職・転職、スクール、アパレルなど季節性がハッキリ出るテーマはありますよね。キーワードを変えれば色々な時に使えるので、ウェブマーケティングやブログの運営に是非活用してみてください。

タイトルとURLをコピーしました