メインコンテンツへスキップ

SE::Google::Trends - Googleによるトレンドキーワードのスクレイパー

Google Trends

スクレイパーの概要

Google Trendsから検索クエリを抽出するスクレイパーです。Google Trendsスクレイパーは、クエリが属するすべてのカテゴリのリスト、および地域や期間ごとのインタレスト(関心度)のリストを自動的に取得できます。

自動クエリ拡張、ファイルからのサブクエリ置換、英数字の組み合わせやリストの総当たりを使用して、可能な限り多くの結果を取得できます。結果のフィルタリングを使用すると、除外キーワードを活用して不要なゴミを削除し、結果をすぐにクリーンアップできます。

A-Parserの機能により、SE::Google::Trendsスクレイパーのスクレイピング設定を将来の使用のために保存(プリセット)したり、スクレイピングのスケジュールを設定したりすることが可能です。

強力な組み込みテンプレートエンジンTemplate Toolkitにより、結果に必要なロジックを適用し、JSON、SQL、CSVを含む様々な形式でデータを出力するなど、必要な形式と構造で結果を保存できます。

スクレイパーの活用事例

収集データ

  • クエリが属するすべてのカテゴリのリスト(クエリ、カテゴリ、人気度の割合)
  • 時系列のインタレストリスト:関心があった時間(Unix形式)、人気度の割合
  • 地域別のインタレストリスト:地域、人気度の割合
  • 関連クエリ(注目)のリスト
  • 関連クエリ(急上昇)のリスト

機能

  • 複数のキーワードでデータを比較する機能(カンマ区切りで入力)
  • キーワード評価のための国の選択機能
  • 結果を表示する期間の選択
  • スクレイピング対象のプロパティ選択(Web Search、Image Search、News Searchなど)
  • Google Trendsのカテゴリ選択(カテゴリリストはJS::GoogleTrendsCatスクレイパーを使用して確認できます)
  • 任意の期間を指定する機能
  • カテゴリによる検索

使用例

  • キーワードごとのトラフィック量の評価
  • 類似テーマの新しいキーワードの検索
  • 任意の期間を設定するには、Search timeでCustom timeを選択し、Custom time rangeにYYYY-MM-DD YYYY-MM-DD形式で期間を指定します
  • カテゴリによる検索では、スクレイパーに渡されるクエリは無視されます(オプション Use empty queries(ignore query value)
スポイラー: 例
Search timeとCustom timeオプションの使用例

クエリ

クエリには、Googleの検索フォームに直接入力する場合と同じようにキーワードを指定します。例:

write essay
Football
Waterfall
Speak in english
Cats and dogs
forex
cheap essay

クエリの置換

組み込みマクロを使用して、ファイルからサブクエリを自動的に置換できます。例えば、各クエリに別の単語リストを追加したい場合、いくつかのメインクエリを指定します:

essay
article
thesis

クエリ形式で、ファイル Keywords.txt から追加の単語を置換するマクロを指定します。この方法により、クエリのバリエーションを大幅に増やすことができます:

{subs:Keywords} $query 

このマクロは、元の検索クエリごとにファイル内の単語数分だけ追加のクエリを作成します。結果として、マクロの動作により [元のクエリ数] x [Keywordsファイル内の単語数] = [総クエリ数] となります。

例えば、Keywords.txt ファイルに以下が含まれている場合:

buy
cheap

置換マクロにより、3つのメインクエリが6つに変換されます:

buy essay
cheap essay
buy article
cheap article
buy thesis
cheap thesis

結果の出力例

A-Parserは、組み込みのテンプレートエンジンTemplate Toolkitにより柔軟な結果フォーマットをサポートしており、任意の形式やCSV、JSONなどの構造化された形式で結果を出力できます。

関連クエリ(急上昇)のリストを、元のクエリ、関連キーワード、人気度の形式でエクスポートします。

結果の形式:

$query:\n$related_queries_rising.format('$key,$rquery,$interest\n')

結果の例:

write essay:
write essay,write my essay 4 me,6550
write essay,write essay on globalization and 21st century,1450
write essay,grammarly,1100
write essay,how to write a hook for an argumentative essay,1000
write essay,write my essay for me cheap,1000
write essay,pay someone to write my essay,550
write essay,write that essay login,550
write essay,write my essay cheap,500
write essay,google docs,350
write essay,docs,300
write essay,how to write an argumentative essay step by step,250
write essay,someone write my essay,200
write essay,how long does it take to write a 1000 word essay,200
write essay,how long does it take to write a 2000 word essay,200
write essay,how to write a synthesis essay ap lang,200
write essay,pay to write essay,190
write essay,write essay on my school,180
write essay,how to write essay in hindi,170
write essay,write an essay on my school,170
write essay,help me write an essay,150
write essay,write my essay for me,130
write essay,help me write my essay,120
write essay,write my paper for me,120
write essay,how to write a hook for a persuasive essay,110
write essay,write essay for me,100

組み込みユーティリティ $tools.CSVLine を使用すると、ExcelやGoogleスプレッドシートにインポート可能な正しいテーブルドキュメントを作成できます。

全体の結果形式:

[% FOREACH i IN p1.related_queries_rising;
tools.CSVline(i.key, i.rquery, i.interest);
END %]

ファイル名:

$datefile.format().csv

先頭のテキスト:

元のクエリ,関連キーワード,人気度

ヒント

結果の全体形式では、Template Toolkitテンプレートエンジンを使用して、FOREACHループ内で配列 $related_queries_rising を出力します。

結果のファイル名では、拡張子を csv に変更するだけです。

タスクエディタで「Prepend text」オプションを表示するには、「More options」を有効にする必要があります。 「Prepend text」にカラム名をカンマ区切りで入力し、2行目を空行にします。

SQL形式での保存

結果の形式:

[%  FOREACH related_queries_rising;     "INSERT INTO serp VALUES('" _ key _ "', '";     rquery _ "', '";    interest _ "')\n"; END  %]

結果の例:

INSERT INTO serp VALUES('write essay', 'write my essay 4 me', '6550')
INSERT INTO serp VALUES('write essay', 'write essay on globalization and 21st century', '1450')
INSERT INTO serp VALUES('write essay', 'grammarly', '1100')
INSERT INTO serp VALUES('write essay', 'how to write a hook for an argumentative essay', '1000')
INSERT INTO serp VALUES('write essay', 'write my essay for me cheap', '1000')
INSERT INTO serp VALUES('write essay', 'pay someone to write my essay', '550')
INSERT INTO serp VALUES('write essay', 'write that essay login', '550')
INSERT INTO serp VALUES('write essay', 'write my essay cheap', '500')
INSERT INTO serp VALUES('write essay', 'google docs', '350')
INSERT INTO serp VALUES('write essay', 'docs', '300')
INSERT INTO serp VALUES('write essay', 'how to write an argumentative essay step by step', '250')
INSERT INTO serp VALUES('write essay', 'someone write my essay', '200')
INSERT INTO serp VALUES('write essay', 'how long does it take to write a 1000 word essay', '200')
INSERT INTO serp VALUES('write essay', 'how long does it take to write a 2000 word essay', '200')
INSERT INTO serp VALUES('write essay', 'how to write a synthesis essay ap lang', '200')
INSERT INTO serp VALUES('write essay', 'pay to write essay', '190')
INSERT INTO serp VALUES('write essay', 'write essay on my school', '180')
INSERT INTO serp VALUES('write essay', 'how to write essay in hindi', '170')
INSERT INTO serp VALUES('write essay', 'write an essay on my school', '170')
INSERT INTO serp VALUES('write essay', 'help me write an essay', '150')
INSERT INTO serp VALUES('write essay', 'write my essay for me', '130')
INSERT INTO serp VALUES('write essay', 'help me write my essay', '120')
INSERT INTO serp VALUES('write essay', 'write my paper for me', '120')
INSERT INTO serp VALUES('write essay', 'how to write a hook for a persuasive essay', '110')
INSERT INTO serp VALUES('write essay', 'write essay for me', '100')
...

結果のJSONへのダンプ

結果の形式:

[% IF notFirst;
",\n";
ELSE;
notFirst = 1;
END;

obj = {};
obj.related_queries_rising.key = [];
obj.related_queries_rising.rquery = [];
obj.related_queries_rising.interest = [];

FOREACH item IN p1.related_queries_rising;
obj.related_queries_rising.key.push(item.key);
obj.related_queries_rising.rquery.push(item.key);
obj.related_queries_rising.interest.push(item.key);
END;

obj.json %]

先頭のテキスト:

[

末尾のテキスト:

]

結果の例:

[{"related_queries_rising":{"rquery":["write my essay 4 me","write essay on globalization and 21st century","grammarly","how to write a hook for an argumentative essay","write my essay for me cheap","pay someone to write my essay","write that essay login","write my essay cheap","google docs","docs","how to write an argumentative essay step by step","someone write my essay","how long does it take to write a 1000 word essay","how long does it take to write a 2000 word essay","how to write a synthesis essay ap lang","pay to write essay","write essay on my school","how to write essay in hindi","write an essay on my school","help me write an essay","write my essay for me","help me write my essay","write my paper for me","how to write a hook for a persuasive essay","write essay for me"],"interest":[6550,1450,1100,1000,1000,550,550,500,350,300,250,200,200,200,200,190,180,170,170,150,130,120,120,110,100],"key":["write essay","write essay","write essay","write essay","write essay","write essay","write essay","write essay","write essay","write essay","write essay","write essay","write essay","write essay","write essay","write essay","write essay","write essay","write essay","write essay","write essay","write essay","write essay","write essay","write essay"]}}]
ヒント

タスクエディタで「Prepend text」および「Append text」オプションを表示するには、「More options」を有効にする必要があります。

結果の処理

A-Parserではスクレイピング中に直接結果を処理できます。このセクションでは、SE::Google::Trendsスクレイパーの最も一般的なケースを紹介します。

任意の日付の使用

任意の期間を設定するには、Search timeCustom time を選択し、Custom time rangeYYYY-MM-DD YYYY-MM-DD 形式で期間を指定します。

例をダウンロード

A-Parserへのプリセットインポート方法

eJx1U1GP2jAM/iuVxcNN4hDctJe+cWhMm9j1dsATQqeIuCy7NMmSlA1V/e9z0tIC
46RKjZ3vsz/HdgWeuTf3bNGhd5BuKjDxDCksP6fpF633EtN0ZVFxl9wna4fJrnRe
FwlnHmEIhlmHNnA3NygE4JizUnoYVuCPBimyPqC1gge24GQ7ZHb389WLIrgOTJYB
1aSB+n1eg7jmPYwfxvfjCX0JHen/kY5Qb7dDoNJIiZtrW7BQ4sBMRm293eWSHXCl
6TIXEnv3nKwnVoQEg1B5uB3lMdDdh5H/GyIwzoUXWjHZZAiP0mddK/E7ClSasHS0
At3cUokpeIwBgvN4UreBQbSBQpSR+6PhQJoz6XAIjqTOGQnh1zfCo2Ve28wEPeSv
QKuplAs8oOxhMf5jKSSnDk5zIn1tibch2X8x6q6881TUpz+WNHRRovWYfe9ZXC/0
/vQYUhTCk+1mulShMWNyviGa7s2eAqzQFrs0beQ2O02woXkjZN+yqeldF2VctOXS
udMqF/usHbQTslQrWpNMzXRhJIa6VCkltcXhSz8eU9e2IRi9wGvyLKYgWd1igNda
um/LRqqxgsbvUxBY0EueZ21D7piU65fF+Q30I0VGfO4EnWNHCHCPe02DRMXU225j
u6Wvbu1tWtXUpV/uuQGHkqKT9oxMagGkk/ofqyh6IQ==

結果のフィルタリング

人気度が指定された値を下回る、トレンドの関連クエリリストをエクスポートする例。

フィルタリングの例
例をダウンロード

A-Parserへのプリセットインポート方法

eJxtVMFu2zAM/ZVACNAVcIP20IsPA9JgKTpkddekpzQohIoOtMiSK8pZA8P/PkqW
7aTLzaRIvsdH0jVzHHf4ZAHBIUvXNSvDN0vZ8kea3huzVZCmKwta4OhqNJfKgR3B
Jy9KBSxhJbcI1qeuz2RQgICcV8qxpGbuUAIVNnuwVgqfLQXZubEFdwQbwtieq8qH
jT8qsIf09VWPLSjuQLx5jwR8sxKl3k7axG8X4x0ckrEN8clYamII6Cjx4pI1A24e
uBNChErX7HxhTywWYZsk5q3aIt+PGN5eX5NlSieNJhNBI2s2mw4A54Gfb6W8mURd
+8cl38PKtLRgcJPA8MiLIIAgbv61a/Ry4j59BS6E9JhctQhe/QH1RcuPQE8bio2d
za0pyOUgFAhKdezWUWnfahVyf7c5LM25QkgYEtU5JyLi64skYbgzNgsakL9mRk+V
WsAe1BAW6t9VUglalWlOSQ8x8XxI9l+Npm/vGIoW6a8lDn2VYN1lv4YsYRZm24mh
ZCEd2TgzlfaD8fPbAZS9Zo8+rDAWephYOaLTpZS02BQ5jGxaDq6TNk7Gcup8NzqX
2yxeQhdZ6RWdY6Znxl+X70tXStFYEJ6H9ZhiHIM3BoJfk2cBgmj1F8icMQp/Lluq
pZW0freeYEFKHqPGku9cqZfnxfELG1aKjCD3CBD5gflwB1tDi0TNNJv+19D/XOpz
P4i0bmhKf/CpDfYtBSddGZnhsG6af/TaovA=
ヒント

設定可能な項目

パラメータ名デフォルト値説明
Search regionWorldwide地域の選択
LanguageEnglish言語の選択
Search timeDefault(Past 5 years)結果を表示する期間の選択
Custom time range空の文字列Search time = Custom time の場合に任意の期間を入力(YYYY-MM-DD YYYY-MM-DD 形式)
Search category id0カテゴリの選択
Search propertyDefault(Web Search)スクレイピング対象のプロパティ選択(Web Search / Image Search / News Search / Google Shopping / YouTube Search)
Use empty queries(ignore query value)スクレイパーに渡されるクエリ値を無視し、カテゴリによる検索を実行