我试图找到所有“餐馆”或“保险机构”,例如,在城市或国家。好吧,也许一个国家太广泛但主要是大城市。
我正在使用Google Places API和python,但我发现您只能使用“radius”参数或“rankby = distance”。问题在于,根据文档,我相信每个查询只能在3个页面上返回20个结果,或者60个结果(如果我错了,请纠正我)。因此,如果我想找到纽约的所有餐厅,我必须从中心或其他地方开始并设置“rankby = distance”,这样它就能在给定半径范围内得到60个最接近的结果。但后来我不知道我的下一个查询是什么......
任何想法如何去做?
答案 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密钥,可以使用。
git clone https://github.com/Pithikos/Geoexplorer.git
python3 examples/google_radar_search.py
这将在瑞典的一个大区寻找名为“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 令牌,您可以获得所有结果。
要求:
你可以试试下面的代码:
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)