Pythonを使ってGoogleマップの公開データとレビューをスクレイピングする方法

Advanced Data Extraction Specialist
Googleマップには数百万の企業が掲載されており、この貴重なデータにアクセスすることで、消費者行動、市場トレンド、競合分析に関する洞察を得ることができます。Googleマップのデータとレビューをスクレイピングすることで、開発者、マーケター、データアナリストは仕事のやり方を変革し、位置情報効率的に抽出できます。
このガイドでは、Pythonを使用してGoogleマップをスクレイピングする手順を説明します。環境設定からデータ抽出、レビューの集計まで、すべて網羅します。
Googleマップデータの理解
Googleマップは、ビジネス分析、市場調査、競合情報など、さまざまなユースケースにおいて非常に価値のある膨大な量のデータを提供しています。Googleマップのデータを効果的にスクレイピングするには、利用可能なデータ、その構造、および最適な抽出方法を理解することが不可欠です。Googleマップが提供するさまざまな種類のデータと、それらを効率的に抽出する方法を詳しく見ていきましょう。
Googleマップのデータの種類
Googleマップをクロールすると、最も一般的に遭遇するデータの種類は次のとおりです。
- 事業者情報: Googleマップ上の各場所または事業所には、名前、住所、連絡先情報、ウェブサイトなど、詳細な情報があります。このデータは通常、事業者プロフィールに表示され、さまざまな業界の事業に関する重要な情報を収集するためにスクレイピングできます。
- 評価とレビュー: Googleマップで最も価値のあるデータポイントの1つは、事業者関連の評価とレビューです。これには、平均星評価、個々のレビュー、レビューアー名、レビュー日、場合によってはレビューアーの写真が含まれます。レビューは、顧客満足度とセンチメントに関する貴重な洞察を提供できます。
- 位置座標: Googleマップ上のすべての場所は、地理座標(緯度と経度)に関連付けられており、マッピング、ジオロケーション、または位置ベースの分析に役立ちます。
- 営業時間: Googleマップは、週末や祝日など、営業時間の異なるほとんどの事業所の営業時間情報を提供しています。
- 写真とメディア: 多くの事業所がGoogleマップのプロフィールに写真をアップロードしています。これらの画像は、店舗のレイアウト、食べ物(レストランの場合)、または製品のディスプレイなど、事業に関する追加の背景情報を提供するためにスクレイピングできます。
- カテゴリとタグ: Googleマップ上の事業所には、カテゴリ(レストラン、ジム、ホテルなど)と、ユーザーがニーズに基づいて事業をフィルタリングして検索するのに役立つキーワードが付けられています。

Pythonを使用したGoogleマップデータとレビューのスクレイピング方法
Googleマップのデータを効率的にスクレイピングするには、少なくとも3つの方法があります。
方法1: Scrapeless GoogleマップAPIを使用する(推奨)
Scrapelessは、Googleマップの検索結果から抽出されたすべての関連情報を含む、構造化されたJSONを提供します。また、レビュー、写真、ナビゲーションルートなどの追加の包括的なデータも提供します。このAPIを使用することで、独自のGoogleマップスクレイパーを作成する必要なく、Googleマップのデータを抽出でき、時間と労力を大幅に節約できます。
スクレイピングされたJSON出力の例:
方法2: GoogleのPlaces APIを使用する
別の方法は、Google Places APIを使用することですが、最初にGoogle Cloudプロジェクトを設定し、セットアップ手順に従ってAPIキーを取得する必要があります。設定が完了したら、HTTP POSTリクエストまたはPython SDKを使用して検索を実行できます。
欠点:
- APIキーを取得するための初期設定は複雑です。
- 特にレビューや特定のメディアコンテンツに関しては、直接スクレイピングするほど多くのデータを取得できない場合があります。
方法3: 独自のDIY Googleマップスクレイパーを作成する
Googleマップはデータを動的に読み込むため、JavaScriptでレンダリングされたページを適切にスクレイピングするには、Puppeteerなどのツールを使用する必要があります。Selenium、Pyppeteer、またはPlaywright Pythonパッケージを利用してヘッドレスブラウザを実行し、関連するGoogleマップデータを抽出できます。
欠点:
- 独自のGoogleマップスクレイピングツールを作成するには時間がかかります。
- IPブロッキング、複数のプロキシの設定、リクエスト制限の管理などの課題に直面する可能性があります。
Pythonを使用したGoogleマップデータのスクレイピング[迅速かつ簡単]
次のセクションでは、PythonとScrapelessを組み合わせてGoogleマップデータをスクレイピングする方法について詳しく説明します。
ステップ1: 使用するツール
Scrapeless APIを使用してGoogleマップ情報をスクレイピングする方法を紹介します。通常、BeautifulSoup、Selenium、Puppeteer、またはRequestsなどのライブラリを使用して、Googleマップデータのスクレイピングのための独自のDIYソリューションを作成する可能性があります。
しかし、今はリラックスして座っていられます。面倒な作業はすべて私たちが処理します。Scrapelessを使用すると、Webスクレイピング中に発生する可能性のあるさまざまな問題について心配する必要がなくなります。私たちが対応します。必要なのはコードを実行することだけです。
Scrapelessを使用してGoogleマップデータを簡単にスクレイピングし、複雑な作業は私たちに任せましょう。Googleマップのレビュー、場所、その他の貴重な情報をスクレイピングする場合は、Scrapelessが最適なソリューションです。手動スクレイピングの手間を解消し、効率的なデータ抽出を実現しましょう。
ステップ2: セットアップと準備
- scrapelessで無料登録した後登録、検索を実行するために無料の5ドルが提供されます。
- APIキー管理に移動します。次に、[作成]をクリックして、独自のAPIキーを生成します。作成したら、APIキーをクリックしてコピーします。

ステップ3: scrapelessリクエストコードを作成する。
ニューヨークでコーヒーというキーワードに基づいて場所を見つけたいとします。このAPIには、特定のエリアの緯度と経度であるllパラメータが必要です。無料のツールを使用して緯度と経度を取得できます。
このリンクにアクセスすると、都市名または地域を入力するだけで、関連する経度と緯度が返されます。これらの数値をコンマで区切って、完全なllパラメータを形成します。
ニューヨークを例にとると:
- 緯度: 40.712776
- 経度: -74.005974
そのため、ll値は@40.712776,-74.005974になります。
ll値を取得したら、scrapeless APIの完全なPythonコードを作成できます。
import json
import requests
class Payload:
def __init__(self, actor, input_data):
self.actor = actor
self.input = input_data
def send_request():
host = "api.scrapeless.com"
url = f"https://{host}/api/v1/scraper/request"
token = "your_token"
headers = {
"x-api-token": token
}
input_data = {
"engine": "google_maps",
"q": "coffee",
"type": "search",
"ll": "@40.712776,-74.005974.14z",
}
payload = Payload("scraper.google.maps", input_data)
json_payload = json.dumps(payload.__dict__)
response = requests.post(url, headers=headers, data=json_payload)
if response.status_code != 200:
print("Error:", response.status_code, response.text)
return
print("body", response.text)
if __name__ == "__main__":
send_request()
パラメータの説明:
- your_tokenをScrapelessウェブサイトから取得したAPIキーに置き換えます。
- qパラメータは、検索する任意のキーワードで使用できます。
- llパラメータは、検索する場所の緯度と経度を指定します。
- 検索結果はresult['local_results']またはresult['place_results']にあります。
place結果とlocal結果の違い
Scrapeless APIは2種類の検索をサポートしています。デフォルトでは、typeはsearchに設定されており、local_resultsに結果の配列が返されます。もう1つのtypeはplaceで、typeをplaceに設定し、dataパラメータを使用して特定の場所または事業に関する詳細情報を提供します。このタイプの検索はplace_resultsを返します。
より広範には、local_resultsは検索範囲が広い場合に提供されるリストであり、place_resultsはクエリが非常に具体的である場合、またはtype=placeを使用してplace_idまたはdataを使用して特定の場所の結果を取得する場合に、特定の場所に関する詳細情報を提供します。
これらのパラメータの使用方法の詳細については、公式のScrapeless APIドキュメントを参照してください。

Scrapeless GoogleマップAPIから多くのデータを取得できます。例えば:
- タイトル
- GPS座標
- レビュー要約
- 平均評価
- 価格
- タイプ
- 住所
- 営業時間情報
- 電話番号
- ウェブサイト
- サービスオプション
- など

Googleマップのすべてのコメントをページングする方法
スクレイピングする結果をページングすることに加えて、Googleマップは通常、デフォルトでページごとに20件の結果を返し、最初のページのstartパラメータは0に設定されています。2ページ目のデータを取得する場合は、startパラメータの値を20増やすだけです。
input_data = {
"engine": "google_maps",
"q": "coffee",
"type": "search",
"ll": "@40.712776,-74.005974.14z",
"start": "20",
}
最大100(6ページ目)をお勧めします。これはGoogleマップのWebアプリと同じ動作です。この制限を超えると、結果が重複したり、失われたりする可能性があります。
Googleマップの結果をCSVにエクスポートする方法
Googleマップの結果からデータが必要な場合は、次のコードを追加できます。このコード例は、すべてのlocal_resultsをCSVに保存する方法を示しています。この例では、タイトル、住所、電話番号、ウェブサイトを保存しました。
result = response.json()
local_results = result['local_results']
with open('maps-results.csv', 'w', newline='') as csvfile:
csv_writer = csv.writer(csvfile)
# ヘッダーの書き込み
csv_writer.writerow(["Title", "Address", "Phone Number", "Website"])
# データの書き込み
for result in local_results:
csv_writer.writerow(
[result["title"], result["address"], result["phone"], result["website"] if "website" in result else ""])
print('CSVファイルへの書き込み完了。')
Googleマップのレビューをスクレイピングする方法
Scrapelessは、特定の場所からのレビューに関する詳細情報を取得するためのレビューAPIも提供しています。この機能を使用するには、place_idまたはdata_idを取得する必要があります。
input_dataのパラメータを変更するだけで、提供したパラメータに対応するAPIの結果を取得できます。このアプローチにより、Scrapeless APIの力を活用して、Googleマップのコメントとレビューを効率的にスクレイピングできます。
input_data = {
"engine": "google_maps_reviews",
"data_id": "0x89c259af336b3341:0xa4969e07ce3108de",
}
注: data_idまたはplace_idパラメータは、local_resultsまたはplace_resultsの結果に返されます。

結果は、レビューリンク、評価、ユーザーの詳細、要約、いいねが含まれます。sort_byパラメータを使用して、評価の高い順にソートできます。

レビューをページングする方法
レビューAPIレスポンスで使用可能な値をページングして、すべてのレビューデータを取得する方法については、以下を参照してください。
- 上記のレビューAPIレスポンスでnext_page_tokenを取得します。

- リクエストパラメータを組み立ててリクエストを開始すると、次のページのレビューが返されます。
input_data = {
"engine": "google_maps_reviews",
"data_id": "0x89c259af336b3341:0xa4969e07ce3108de",
"next_page_token": "CAESY0NBRVFDQnBFUTJwRlNVRlNTWEJEWjI5QlVEZGZURUZMUVU5ZlgxOWZSV2hEU21OSVRrMXBiR0Z4ZG1wNWNqRjJhMEZCUVVGQlIyZHVPVEpSWTBOaGQxWm5abmRuV1VGRFNVRQ=="
}
Scrapelessがクロールできるその他のデータ
Scrapelessは、上記で示したローカル結果と場所の結果を含む、複数のシナリオを提供します。さらに、投稿者、ルート案内API、写真APIなど、複数のAPIも提供しています。さまざまなAPIの場合、異なるパラメータを作成するだけです。
ここでは、ルート案内APIのクロールを例として使用します。上記のコードのinput_dataのパラメータを変更するだけです。結果は、距離、時間、各ルートの詳細情報など、含まれます。
input_data = {
"engine": "google_maps_directions",
"start_addr": "Austin-Bergstrom International Airport",
"end_addr": "5540 N Lamar Blvd, Austin, TX 78756, USA",
}
さらに、travel_modeパラメータを使用して移動手段を選択できます。

上記は、Googleマップデータと場所のレビューをクロールする方法です。お役に立てれば幸いです。
まとめ
Googleマップのデータとレビューをスクレイピングすることは、非常に効果的なツールになる可能性があります。しかし、適切なツールがなければ、CAPTCHA、IPブロッキング、複雑なデータ抽出などの問題が発生し、技術的な課題になる可能性があります。
Scrapelessを使用すると、一般的なスクレイピングの障害を回避し、あらゆる種類の情報を取得できます。
今すぐ登録して、10万件の無料リクエストを取得し、Discordコミュニティに参加して無料クレジットを取得してください。
追加のリソース
他のGoogle情報のスクレイピングにも関心がある場合は、次の詳細な記事をご覧ください。
Google Scholarの結果をスクレイピングする方法
Google求人情報の結果をスクレイピングする方法
Pythonを使用してGoogle Flightsデータをスクレイピングする方法
Google Trendsデータをスクレイピングする方法-簡単なガイドと無料トライアル
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。