我目前正在开展一个项目,其中我有一个公司名称列表,我必须得到每个公司名称的地址。我尝试使用地理编码谷歌API甚至以下代码,但它不起作用。
> from geopy.geocoders import Nominatim
> geolocator = Nominatim(user_agent="specify_your_app_name_here")
> location = geolocator.geocode("Company name")
> print(location.address)
> print((location.latitude, location.longitude))
> print(location.raw)
有谁知道这是怎么做到的吗?
非常感谢你,
我在英国伊斯灵顿的Angel选择了一个名为Chilango的快餐店。然后我通过MapQuest尝试了Open Search (Nominatim) API。免费并需要API密钥。
我模仿了一个示例GET请求:
import requests
res = requests.get('http://open.mapquestapi.com/nominatim/v1/search.php?key=myKey&format=json&q=Chilango+[fast food]&addressdetails=1&limit=3&viewbox=-1.99%2C52.02%2C0.78%2C50.94&exclude_place_ids=41697').json()
从文档:
在[]中包含查询字符串会导致Nominatim进行设施搜索。例如,q = [pub]返回OpenStreetMap中type = pub的结果。
期望的结果是3个结果中的第2个我将搜索结果限制为。
首先,重现错误:
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="specify_your_app_name_here")
location = geolocator.geocode("Company name")
这给出了错误消息:
GeocoderServiceError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:852)
这是一个已知问题,我在这里找到了一个解决方案:https://github.com/geopy/geopy/issues/124
import certifi
import ssl
import geopy.geocoders
ctx = ssl.create_default_context(cafile=certifi.where())
geopy.geocoders.options.default_ssl_context = ctx
geolocator = geopy.geocoders.Nominatim(user_agent="specify_your_app_name_here")
location = geolocator.geocode("Lozari beach corse")
现在它有效
print(location)
# Out: Plage de Lozari, T 30, Palasca, Calvi, Haute-Corse, Corse, France métropolitaine, 20226, France