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

Googleマップからビジネス情報をスクレイピング

11か月以上前に更新

Googleマップは単なる位置を特定するための地図サイトではなく、豊富なビジネスインサイトを得ることができるデータベースでもあります。多くの人がGoogleマップのデータをスクレイピングしてビジネスディレクトリを集約したり、ビジネスリードベースを構築したりしています。

このチュートリアルでは、Googleマップからビジネス情報を取得する方法を説明いたします。

Googleマップのスクレイピングには、テンプレートギャラリーで提供しているすぐに使えるタスクテンプレートを利用するか、このチュートリアルに従って一からタスクを作成することができます。

テンプレートを使用する場合、キーワード(例:Accounting, NY)またはウェブページのURL(例:https://www.google.com/maps/search/insurance+West+University+Place,+TX/@29.716598,-95.4987615,10z/data=!3m1!4b1)を入力し、データが出てくるのを待つだけです。

こちらがテンプレートデータのサンプルです。テンプレートを試してみたい方は、14日間のプレミアムトライアルにお申し込みください:14 日間の無料トライアルを開始

自分でクローラーを設定する方法を学びたい場合は、このチュートリアルを続けてください。

取得するデータフィールドは次のとおりです:タイトル、レビュー数、レビュー評価、住所、電話番号、ウェブサイト、営業時間。

主な手順は右側のメニューに表示されており、デモタスクファイルはこちらからダウンロードできます。


1. 対象のWebページを開く

  • 例のURLを検索バーに入力し、スタートをクリックする

複数のURLをスクレイピングする場合は、バーにいくつかのURLを入力することができます。


2. ループアイテムで部分スクロールしてさらに結果を読み込む

  • ワークフローにループアイテムを追加する

  • ループモードとしてスクロールを選択

  • スクロールエリアとして子階層を選択

  • XPathに //a[@class="hfpxzc"]/../../.. を入力

  • 1画面ずつスクロールを選択

  • ループ回数を100回、実行間隔を1秒に設定

  • 保存をクリック


3. ループアイテムを作成 - 各検索結果をクリックする

  • 一番目のブロックをクリック

  • 二番目のブロックをクリック

  • 各URLをループクリックするを選択

  • いいえを選択

  • ループアイテム1 の設定に移動

  • ループモードとして可変リストを選択

  • XPathに //a[@class="hfpxzc"] を入力

  • 保存をクリック

  • アイテムをクリックの設定に移動

  • 詳細設定を選択

  • 新しいタブで開くのチェックを外す

  • AJAXタイムアウトを7秒に設定

  • 保存をクリック


4. データを選択してデータを抽出する

  • Webページでビジネスタイトル、カテゴリ、住所など、必要な情報を選択

  • 要素データを選択

  • データを収集の設定に移動

  • ループ内のアイテムを収集するのチェックを外す

  • 詳細設定に移動

  • 実行前に数秒を待機を3秒に設定

  • 保存をクリック

Googleはスクレイピングに非常に厳しく、ソースコードが非常に読みにくい。そのため、各データフィールドのXPathを修正して正確なスクレイピングを行う必要がある。

必要なものはすべて用意済み。以下のXPathを使用してください。

  • データプレビューに移動し、縦向きに切り替え

  • デフォルトのXPathを修正されたものに置き換え

一般的なフィールドのXPathは以下:

タイトル: //button[@data-item-id="address"]/../../..//h1

レビュー数: //span[contains(@aria-label,'件のクチコミ')]

評価: //span[contains(@aria-label,'星')]/preceding-sibling::span

カテゴリ: //button[contains(@jsaction,"pane") and contains(@jsaction,"category")]

住所: //button[@data-item-id="address"]

ウェブサイト: //a[contains(@aria-label,'ウェブサイト:')]

電話番号: //button[contains(@data-item-id,"phone")]

営業時間: //div[contains(@aria-label,'曜日')]

(インターフェース言語は日本語であることをご確認ください。)

注:XPathについての詳細は「XPathとは?OctoparseでXPathを利用する方法は?」を参照してください。


5. ページレベルのURLから抽出 - GPS座標を抽出する(オプション)

多くのリクエストに応え、このステップではGoogleマップからGPS座標データを抽出する方法を説明いたします。

座標はページURLに隠れているため、まずループ内でページURLを抽出。

  • データプレビュー画面でカスタムフィールド追加アイコンをクリック

  • 該当ページの情報を追加からURLを選択

次に、正規表現ジェネレーターを使ってページURLから座標を抽出。

  • URLフィールドのほかのオプションをクリックし、データを再フォーマットを選択

  • + ステップを追加ボタンをクリックし、正規表現によるマッチングを選択

自分で正規表現を書きたくない場合は、正規表現ジェネレーターを利用することができます。

  • 以下のパラメータを入力し、すべてにマッチにチェック

  • マッチした文字列ボックスが希望の形式でデータを表示していることを確認

  • 保存をクリックします


6. タスクを実行してデータを抽出する

  • 保存をクリック

  • 右上の実行ボタンをクリック

  • ローカル収集を選択し、あなたのパソコンで実行

以下がサンプル出力(スポンサーの要素は抽出されておりません)。

注:Googleマップはメールアドレスを表示しない。ビジネスのメールアドレスを取得するには、Email & Social Media Scraperテンプレートを利用していただけます。

GoogleマップからスクレイプしたビジネスのWebサイトURLをこのテンプレートに入力するだけで、メールアドレスを取得可能です。

こちらの回答で解決しましたか?