如何使用Google Places API获取城市或国家/地区的所有地点(或特定类型的地点,如餐馆)?

时间:2012-12-25 00:30:46

标签: google-places-api

我试图找到所有“餐馆”或“保险机构”,例如,在城市或国家。好吧,也许一个国家太广泛但主要是大城市。

我正在使用Google Places API和python,但我发现您只能使用“radius”参数或“rankby = distance”。问题在于,根据文档,我相信每个查询只能在3个页面上返回20个结果,或者60个结果(如果我错了,请纠正我)。因此,如果我想找到纽约的所有餐厅,我必须从中心或其他地方开始并设置“rankby = distance”,这样它就能在给定半径范围内得到60个最接近的结果。但后来我不知道我的下一个查询是什么......

任何想法如何去做?

8 个答案:

答案 0 :(得分:30)

很遗憾,Google Places API无法获得超过60个结果;至少没有违反服务条款:

  

除非你事先已经收到过   Google的授权(或适用的,来自Google的提供商)   特别内容),您不得:(d)以某种方式使用产品   这使您或任何其他人可以访问大量下载或批量   任何内容的订阅源,包括但不限于数字纬度   或经度坐标,图像和可见地图数据

此外,您可以阅读here

  

这在很大程度上是许可问题。但这也是因为目标   Places API不是为了便于抓取或聚合   Google以您描述的方式放置数据。任何应用程序   所以几乎肯定不符合谷歌地图或谷歌   Maps API服务条款,可能会阻止使用   API或其他Google服务随时可用。 Places API是有意的   允许应用为用户提供发现身份的方法   附近的地方。搜索次数存在实际限制   用户将扫描并考虑的结果。我不相信   有必要为用户提供200个结果,我怀疑这样做   只会增加刮擦应用程序的开发   谷歌地方数据,没有增加显着的好处或实用程序   API旨在提供的应用类型,以及我们希望提供的应用类型   鼓励。

作为进一步参考,请查看this answer

答案 1 :(得分:4)

使用雷达搜索。查看文档here

您可以一次性获得200个结果,但需要从配额中获得5个结果。与附近的搜索相比,结果的细节较少,但您可以通过使用地点详细信息搜索来获得结果。

希望这会有所帮助。

  

注意:自2018年6月30日起,不推荐使用雷达搜索。之后   时间,此功能将不再可用。

答案 2 :(得分:4)

我前一段时间制作了这样一个工具https://github.com/Pithikos/Geoexplorer。您可以看到here的样子。

我甚至还有一个Google Places的工作示例,如果您有API密钥,可以使用。

  1. git clone https://github.com/Pithikos/Geoexplorer.git
  2. 在文件examples / google_radar_search.py​​
  3. 中添加API密钥
  4. python3 examples/google_radar_search.py
  5. 在浏览器中打开GUI / index.html
  6. 这将在瑞典的一个大区寻找名为“ICA”的杂货。您可以在 config.py 中配置正在扫描的区域,并在 google_radar_search.py​​ 中配置您的搜索查询。

    这应该在13.10之后的任何Ubuntu上正常运行。如果您使用Windows或更早版本,请阅读here安装依赖项部分)。

    您还可以使用API​​添加您喜欢的任何其他服务。请注意,在使用时不要违反Google或任何其他公司的政策。我这样做只是为了测试哪种服务能给我最好的结果,然后再决定使用哪种服务。

答案 3 :(得分:2)

不幸的是,谷歌并不希望人们能够做到这一点,因此他们设计了自己的API以防止人们做这样的事情。然而,有其他选择。如果你想通过API访问来实现这一点Factual是领导者;他们在50个国家拥有1.02亿个参赛作品。

答案 4 :(得分:1)

我在Google Map搜索上创建了搜寻器,您可以在此用例中使用它。您可以检查搜寻器here

答案 5 :(得分:0)

根据我的理解..我们建议在我的场景中使用cross api reference将使用嵌套异步WCF调用区域除以谷歌规定的有限调用

答案 6 :(得分:0)

您可以使用第三方解决方案,例如 SerpApi。这是一个免费试用的付费 API。我们为您处理代理、解析验证码并解析所有丰富的结构化数据。

我们提供用于抓取完整 Google Places 结果以及 Google Maps 结果的 API。

答案 7 :(得分:0)

在 URL 中使用 Page 令牌,您可以获得所有结果。

要求:

  • 需要放置 API 密钥。
  • 安装请求库。

你可以试试下面的代码:

import requests
import json

final_data = []

location='24.4165267,75.833981'
radius='2000'
types='restaurant'
url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=%s&radius=%s&types=%s&key=api key" % (location,radius,types)

while True:

    response = requests.request("POST", URL)
    response = json.loads(response.text)
    results = response['results']

    for result in results:
       final_data.append(data)

    if 'next_page_token' not in response:
        break
    else:
        next_page_token = response['next_page_token']

    next_page_token = '&pagetoken=%s' % str(next_page_token)
    url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=%s&radius=%s&types=%s&key=api key%s" % (location,radius,types,next_page_token)

print(final_data)