web-dev-qa-db-ja.com

Google Places APIを使用して都市または国のすべての場所(またはレストランなどの特定の種類の場所)を取得する方法

たとえば、都市や国で、すべての「レストラン」または「保険代理店」を見つけようとしています。さて、国は広すぎるかもしれませんが、主に大都市です。

私はGoogle Places APIを使用しており、pythonですが、 "radius"パラメーターまたは "rankby = distance"しか使用できないことがわかります。問題は、ドキュメントによると、各クエリは3ページで20の結果、または60の結果のみを返すことができます(間違っている場合は修正してください)。たとえば、ニューヨークのすべてのレストランを検索したい場合は、中心か何かから始めなければなりません。 "rankby = distance"を設定すると、設定された半径内で60個の最も近い結果が得られますが、次のクエリがどうなるかわかりません...

これを行う方法はありますか?

30
Marcus Johnson

残念ながら、Google Places APIからは60を超える結果を取得できません。少なくとも利用規約に違反することなく:

Google(または、該当する場合、特定のコンテンツのプロバイダー)から事前の書面による許可を受けていない限り、(d)大量のダウンロードまたはバルクフィードへのアクセスを許可する方法で製品を使用してはなりません。数値の緯度または経度の座標、画像、可視地図データを含むがこれらに限定されない、あらゆるコンテンツの

さらに、あなたが読むことができるように ここ

それは大部分がライセンスの問題です。しかし、Places APIの目標は、Googleプレイスデータのスクレイピングや集約を、あなたが説明する方法で促進することではないためでもあります。これを行うアプリケーションは、ほぼ確実にGoogle MapsまたはGoogle Maps API利用規約に準拠しておらず、APIまたは他のGoogleサービスの使用がいつでもブロックされる可能性があります。 Places APIは、アプリがユーザーに近くのプレイスを特定する方法を提供できるようにすることを目的としています。ユーザーがスキャンして検討する検索結果の数には、実際的な制限があります。ユーザーに200の結果を提供する必要はないと思いますが、そうすることは、Googleプレイスデータをスクレイピングするアプリケーションの開発を増やすだけで、APIが提供するアプリの種類に大きなメリットやユーティリティを追加することはないと思います、そして私たちが奨励したいこと。

さらなる参考として、 this answer もご覧ください。

30
user1419445

レーダー検索を使用します。ドキュメントを確認してください here

一度に200の結果を取得できますが、クォータから5つの要求がかかります。結果は、近くの検索に比べて詳細が少なくなりますが、場所の詳細検索を使用していつでも詳細を取得できます。

お役に立てれば。

注意:レーダー検索は、2018年6月30日で廃止されます。それ以降は、この機能は使用できなくなります。

4
Rahul Sainani

私は少し前にそのようなツールを作りました https://github.com/Pithikos/Geoexplorerhere のように見えます。

APIキーをお持ちの場合に使用できるGoogleプレイスの実用的な例さえあります。

  1. git clone https://github.com/Pithikos/Geoexplorer.git
  2. ファイルexamples/google_radar_search.py​​にAPIキーを追加します
  3. python3 examples/google_radar_search.py
  4. ブラウザでGUI/index.htmlを開きます

これは、スウェーデンの大きな地域で「ICA」という名前の食料品を探します。スキャンする領域はconfig.pyで構成でき、検索クエリはgoogle_radar_search.py​​

これは、13.10以降のUbuntuで正常に動作するはずです。 Windowsまたはそれ以前のバージョンを使用している場合は、 hereインストール依存関係セクション)をお読みください。

APIを使用して、好きな他のサービスを追加することもできます。 Googleを使用するときは、Googleまたは他の会社のポリシーに違反しないように注意してください。どのサービスを使用するかを決定する前に、どのサービスが最良の結果をもたらすかをテストするためだけにこれを行いました。

4
Pithikos

残念ながら、Googleは人々がこれを行えるようにしたくないので、人々はこのようなことをしないようにAPIを設計しています。ただし、代替手段があります。 APIアクセスでこれを行いたい場合 Factual がリーダーです。 50か国で1億2000万件のエントリがあります。

2
user6016034

Googleマップ検索の上にクローラーを作成しました。この使用例で使用できます。クローラーを確認できます here

1
drobnikj

私の理解から..私たちのシナリオでクロスAPIリファレンスを使用することをお勧めします。グーグルが定めた制限されたコールで分割されたエリアへの非同期WCFコールのネストを使用します

0
Rizwan Patel