使用Python进行地理编码 - 从公司名称获取地址

问题描述 投票:-2回答:2

我目前正在开展一个项目,其中我有一个公司名称列表,我必须得到每个公司名称的地址。我尝试使用地理编码谷歌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)

有谁知道这是怎么做到的吗?

非常感谢你,

python web-scraping geocoding
2个回答
0
投票

我在英国伊斯灵顿的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个我将搜索结果限制为。


0
投票

首先,重现错误:

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
© www.soinside.com 2019 - 2024. All rights reserved.