Python脚本来查询谷歌地图,并得到由此产生的URL

问题描述:

说我想在谷歌地图中搜索“白宫”。得到的URL将是“https://www.google.com/maps/place/The+White+House/@38.8976805,-77.0387185,17z/data=!3m1!4b1!4m5!3m4!1s0x89b7b7bcdecbb1df:0x715969d86d0b76bf!8m2!3d38.8976763!4d-77.0365298”。我想在python中模拟这个。我会如何去做这件事?所以理想情况下,我会通过“白宫”并打印出结果网址。Python脚本来查询谷歌地图,并得到由此产生的URL

我的最终目标是从地名找到坐标。

+1

您可以使用请求,究竟什么是你想怎么办? – oshaiken

+0

https://developers.google.com/maps/documentation/directions/start – oshaiken

+0

我有一堆非常混乱的地址/地点名称,我想查找坐标。地图API的地理编码部分已折旧,所以这是我能想到的唯一解决方案 – lena

我想找到坐标

你可以刮它是这样的:

import requests 
import ast 

def google_maps(req): 

    req.replace(' ','+') 
    uri = 'https://www.google.com/maps/place/' 
    url = uri+req 
    ret = requests.get(url).text 
    scrape = '['+ret.split('cacheResponse([[')[1].split(',[')[0].split(',',1)[1] 
    location = ast.literal_eval(scrape) 
    print location 

google_maps('the white house') 


>>> 
[-77.0365298, 38.8976763] 

获得通过请求返回的数据更好的感觉,你可以这样做:

print ret[:10000] 

获取前10000个字符,您将在其中找到以第一个字符开头的前缀分裂()操作:

cacheResponse([[ 

同样:

google_maps('the pentagon') 
>>> 
[-77.0562669, 38.8718568] 

google_maps('the golden gate bridge') 
>>> 
[-122.4782551, 37.8199286] 
etc. 
+1

为什么不接受此答案? – oshaiken