コンテンツにスキップ

Google トレンドをスクレイピングして超大国を解放する方法

Google が無料で利用できるトレンド ツールは、ビジネスに優位性をもたらす検索データの宝庫を提供します。このデータを大規模にスクレイピングすることで、競合他社に勝つための貴重なインテリジェンスを獲得できます。この包括的なガイドでは、Python を使用して Google トレンド スクレイピングのスーパーパワーを活用する方法を説明します。

Google トレンドは、集計された検索ボリューム データへのアクセスを民主化することで競争条件を平等にしました。賢明な企業は、影響の大きい意思決定に役立つ独自の洞察を得るために、トレンドをますます活用しています。

  • デジタルマーケティング担当者の89% 最近の調査によると、キーワード調査には Trends を利用します。検索ボリューム データは、コンテンツと SEO 戦略の最適化に役立ちます。

  • トレンドが役に立った Spotify、未開拓の市場を特定 音楽検索パターンに基づいて、ルーマニアとクロアチアを含むように拡大します。

  • ヘッジアイのような金融会社 小売ブランドのトレンド データを収集し、検索インタレストをシグナルとして使用して経済パフォーマンスを予測します。

  • VCとスタートアップ トレンドを使用して、発売前の製品に対する市場の需要を定量化し、新しいビジネスチャンスを特定します。

  • トレンドさえ 新型コロナウイルス感染者数の急増が予測される 特定の地域における症状検索への関心の高まりを特定することによって。

アプリケーションは無限にありますが、データを手動で検索するのは時間がかかり、制限もあります。そこでプロセスを自動化し、Trends の真の力を引き出すために Web スクレイピングが登場します。

Python Web スクレイパーのセットアップ

スクレイピングを行う前に、主要な前提条件とツールについて説明します。

Pythonを学ぶ

スクレイパーを実装するには、Python の熟練度が必要です。まず、Python の基礎とオブジェクト指向の概念に関するオンライン コースを完了することをお勧めします。優れたスターター リソースとしては、次のようなものがあります。

Python の豊富なライブラリとシンプルな構文は、Web スクレイピングに最適な選択肢です。

スクレーパーライブラリ

これらの Python ライブラリはスクレイピング機能を提供します。

  • つながり申請 – HTTP リクエストを送信して Web ページをダウンロードします。 Seleniumよりも軽量です。

  • 美しいスープ – HTML および XML ドキュメントを解析し、CSS セレクターと正規表現を使用してデータを抽出します。

  • Selenium – Chrome や Firefox などのブラウザを起動して制御し、自動化します。 JavaScript レンダリングの問題を回避できます。

  • スクラップ – スパイダー、パイプライン、キャッシュなどのツールを使用した大規模なスクレイピング プロジェクト向けの完全なフレームワーク。

Google トレンドの場合は、Requests を使用してページを取得し、BeautifulSoup を使用して HTML を解析することをお勧めします。 Scrapy は単一サイトのスクレーパーとしてはやりすぎです。

プロキシ

スクレーパーのトラフィックをマスクするには、リクエストをルーティングします。 住宅用プロキシサーバー BrightData、SmartProxy、Oxylabs などのプロバイダーから提供されます。これにより、すべてのリクエストが異なる居住用 IP アドレスから送信されるようになります。

Py などの Python ライブラリを使用してリクエストでプロキシを構成するSocks:

import requests
import socks 

proxy = "PROXY_HOST:PORT"

socks.set_default_proxy(socks.SOCKS5, proxy)
socket.socket = socks.socksocket

requests.get(‘http://www.example.com‘)

ローテーションプロキシは、安定した長時間実行のスクレイピングの鍵となります。

仮想環境

  仮想環境 スクレイパーの依存関係と設定をメインの Python インストールから分離します。一般的な選択肢は次のとおりです virtualenv, pipenv そしてアナコンダ。

例:

pip install virtualenv
virtualenv myscraperenv
source myscraperenv/bin/activate

では実際にスクレーパーを作ってみましょう!

Trends Web アプリは、内部 API にリクエストを送信して検索データを取得します。このデータが HTML 内のどこに存在するかをリバース エンジニアリングして抽出する必要があります。

段階的に見ていきましょう。

ページの HTML を取得しています

まず、リクエストを使用してページの HTML をダウンロードします。

import requests

url = ‘https://trends.google.com/trends/explore?date=all&q=python‘ 

response = requests.get(url)
html = response.text

ここに Selenium ブラウザ自動化を統合して JavaScript をレンダリングすることもできます。

BeautifulSoup による解析

次に、HTML を解析し、BeautifulSoup を使用して DOM ツリー内を移動します。

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, ‘html.parser‘)

soup 構造化ドキュメントが含まれるようになりました。

JSONデータの抽出

トレンド チャートのデータは、という JavaScript 変数内に存在します。 window.DATA。生の JSON 文字列を抽出する必要があります。

data = soup.find(‘script‘, text=lambda t: t.startswith(‘window.DATA‘))
data_string = data.text.split(‘window.DATA = ‘)[1].rstrip(‘;‘) 

次に、それをネストされた Python 辞書に変換できます。

import json

data_json = json.loads(data_string)

時系列の解析

キーワードの主な検索ボリュームの時系列は次のとおりです。 data_json[‘timelineData‘]。それを抽出しましょう:

import pandas as pd 

df = pd.DataFrame(data_json[‘timelineData‘])
print(df.head())

これにより、日付、検索頻度、および書式設定された日付を含む最初の数行が出力されます。

そして出来上がり!あらゆるキーワードの Google トレンド データにプログラムで制限なくアクセスできるようになりました。

1 つのキーワードのデータを手動で抽出することは便利ですが、真の力は何千もの用語をスクレイピングすることによって得られます。

複数のキーワードのトレンドをクエリするには、スクレーパーをループでラップするだけです。

keywords = [‘python‘, ‘java‘, ‘c++‘] 

dataframes = []

for kw in keywords:

  url = f‘https://trends.google.com/trends/explore?date=all&q={kw}‘

  # Fetch HTML, extract JSON 
  # ...

  df = pd.DataFrame(data_json[‘timelineData‘])

  # Append each keyword‘s dataframe
  dataframes.append(df)

# Merge all data  
trends_data = pd.concat(dataframes, keys=keywords)

責任を持ってスクレイピングするために、リクエストとエラー処理の間に遅延を追加することもできます。

import time
from random import randint

for kw in keywords:

  try:
    # Scraper code

    time.sleep(randint(3,5))

  except Exception as e:
    print(f‘Error: {e}‘)

    # Pause on failure
    time.sleep(60) 

これにより、サーバーの過負荷を避けるために、適度なペースで Google にクエリが実行されます。プロキシはリクエストをさらに分散します。

キャプチャとブロックのバイパス

大量のデータを抽出しようとするスクレイパーは、キャプチャやボット検出手段に遭遇する可能性があります。それらを回避する実証済みのテクニックを次に示します。

住宅用プロキシ

リクエストをルーティングする 住宅用IP トラフィックはホーム ネットワークから発信されるため、より人間らしく見えます。上位のプロキシ プロバイダーには次のものがあります。

  • ブライトデータ – 40% の稼働率と自動解決キャプチャを備えた 97 万の IP。料金は月額約 500 ドルから始まります。
  • スマートプロキシ – 特別な Instagram およびスニーカー プロキシを備えた 10 万の IP。最低月額約 700 ドル。
  • オキシラブ – 15 万の住宅用 IP。高い同時実行性とボリュームをサポートします。月額約 500 ドル。

Py などのライブラリを使用して Python でローテーション プロキシを構成するSocks、リクエスト、スクレイピー。

ブラウザの自動化

Selenium 実際の Chrome または Firefox ブラウザを駆動して JavaScript をレンダリングし、ヘッドレス ツールを探している保護をバイパスできます。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.headless = True 

driver = webdriver.Chrome(options=options)

driver.get(url)
html = driver.page_source

driver.quit() 

これは、ほとんどの防御にとっては実際のブラウザ セッションのように見えます。

キャプチャ解決サービス

のようなツール アンチキャプチャ & 2Captcha キャプチャを人間のソルバーにルーティングすることで、自動的にキャプチャを解決できます。料金は、速度と精度のニーズに応じて、キャプチャ 2 件あたり約 1000 ドルから始まります。

Python の統合例:

import twocaptcha

api_key = ‘YOUR_API_KEY‘

solver = twocaptcha.TwoCaptcha(api_key)

try:
  result = solver.recaptcha(sitekey=‘SITE_KEY‘, url=‘URL‘)

except twocaptcha.APIError as e:
  print(e)

プロキシ、ブラウザ、キャプチャ ソルバーを組み合わせて使用​​すると、ほぼすべてのブロックを回避できます。

データ抽出が自動化されたので、ストレージ、分析、視覚化のオプションを見てみましょう。

構造化データ形式

Python で迅速に分析するには、スクレイピングしたトレンド データを パンダのデータフレーム。これにより、タイムスタンプ、検索ボリューム、およびその他の関連メタデータを含む表形式の構造が提供されます。

データフレームを次のような形式にエクスポートすることもできます。 CSV or JSONの 移植性を高めるために:

trends_df.to_csv(‘trends_data.csv‘, index=False)

データベースへのロード

より高度な SQL クエリや他のデータ ソースとの結合を行うには、スクレイピングしたデータを次のようなリレーショナル データベースにロードします。 PostgreSQL or MySQL:

CREATE TABLE trends_data (
  date DATE,
  keyword VARCHAR(255), 
  search_volume INT  
);

# Insert dataframe rows 
trends_df.to_sql(‘trends_data‘, engine, if_exists=‘append‘, index=False)

NoSQL データベースのような MongoDBの 柔軟な JSON ストレージにも適しています。

ビジネスインテリジェンスツール

インタラクティブなダッシュボードと視覚化を構築するには、トレンド データを次のようなツールに統合します。 タブロー, ルッカー or Power BI。これらはデータベースやスプレッドシート形式に直接接続します。

グラフ付きの Tableau ダッシュボードのサンプル

Tableau を使用すると、傾向とパターンを簡単に見つけることができます。

統計分析とモデリング

Trends データを Python と Pandas にロードすると、次のようなライブラリを使用して時系列分析を実行できます。 統計モデル & 預言者:

from prophet import Prophet

model = Prophet()
model.fit(trends_df)

future = model.make_future_dataframe(periods=365)
forecast = model.predict(future)

Prophet は、歴史的なパターンに基づいて将来の傾向を予測します。

次のような ML モデルを構築することもできます。 有馬 & LSTM データセットの上に配置して洞察を生成します。可能性は無限大!

このガイドでは、次の方法を説明しました。

  • Requests、Selenium、Beautiful Soup を使用して Python スクレーパーをセットアップする
  • JSONを解析して検索ボリュームの時系列データを抽出する
  • ループとプロキシを使用して何千ものキーワードをスクレイピング
  • トレンド データを Pandas、CSV、データベースに保存
  • データを分析して視覚化して洞察を得る

スクレイピングにより、Google の強力なトレンド ツールにオンデマンドでアクセスできるようになり、独自の競争力のあるインテリジェンスが得られます。

同じテクニックをどのサイトにも適用できます。分析スタック内のトレンド データを使用すると、ライバルにはない将来の機会とリスクについてのビジョンを得ることができます。

高度なスクレイピングとプロキシに関するその他の質問にいつでも喜んでお答えします。新しく見つけた Web スクレイピングのスーパーパワーを倫理的に使用し、データをビジネスの指針にしましょう。

参加する

あなたのメールアドレスは公開されません。 必須フィールドは、マークされています *