Sta*_*low 20 python geolocation
无论如何,我可以通过python获取我的设备的位置.目前我不得不使用selenium并打开浏览器,使用位置服务网站并将其结果设置为lat/long变量.
但有更简单的方法吗?
更新:我在我的RaspberryPi上使用3G加密狗,所以寻找一种方法来获得特定的lat/long - 我可以通过Web服务成功地做到这一点,只是想知道这些请求是否有更快的方法内置到python中?
小智 28
假设:
正在寻找位置的设备是运行Python的设备您可以访问Internet(由于您提到了位置服务网站,因此看起来很公平)
在这种情况下,存在与评论中链接的服务类似的服务,其中请求的IP用于生成位置.例如,http://freegeoip.net/.
import requests
import json
send_url = 'http://freegeoip.net/json'
r = requests.get(send_url)
j = json.loads(r.text)
lat = j['latitude']
lon = j['longitude']
Run Code Online (Sandbox Code Playgroud)
缺点
仅使用IP来生成位置.
更新:此API端点被弃用,并且将停止在7月1日,2018年工作欲了解更多信息,请访问: https://github.com/apilayer/freegeoip#readme "
小智 26
或者,就像这一样简单
import geocoder
g = geocoder.ip('me')
print(g.latlng)
Run Code Online (Sandbox Code Playgroud)
Ben*_*ing 11
其他人提到了一些服务,但是要考虑的另一个服务是我自己的服务https://ipinfo.io,它将为您提供纬度,经度和许多其他信息:
Bash的用法:
$ curl ipinfo.io
{
"ip": "24.6.61.239",
"hostname": "c-24-6-61-239.hsd1.ca.comcast.net",
"city": "Mountain View",
"region": "California",
"country": "US",
"loc": "37.3845,-122.0881",
"org": "AS7922 Comcast Cable Communications, LLC",
"postal": "94040"
}
Run Code Online (Sandbox Code Playgroud)
如果只需要坐标数据,可以通过请求获得/loc:
$ curl ipinfo.io/loc
37.3845,-122.0881
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参见https://ipinfo.io/developers。
由于http://freegeoip.net/jsonAPI 端点已被弃用并将于 2018 年 7 月 1 日停止工作。因此,他们发布了新的 API http://api.ipstack.com。
因此,您可以使用新的 API 来尝试一下:
import requests
import json
send_url = "http://api.ipstack.com/check?access_key=YOUR_ACCESS_KEY"
geo_req = requests.get(send_url)
geo_json = json.loads(geo_req.text)
latitude = geo_json['latitude']
longitude = geo_json['longitude']
city = geo_json['city']
Run Code Online (Sandbox Code Playgroud)
为了获得您自己的ACCESS_KEY,您必须首先在https://ipstack.com/signup/freeipstack.com创建一个免费帐户。
随着latitude,longitude和city; 您还可以获取zip、、、、、、、。continent_codecontinent_namecountry_codecountry_nameregion_coderegion_name
限制:免费帐户每月仅允许您 10,000 个请求。如果您的要求更多,那么您可以升级您的帐户。
有关此新 API 的更多信息,您可以访问https://github.com/apilayer/freegeoip
参考:@JishnuM 答案
小智 2
这是一个具有 GeoFreeIP 的 Python 地理编码模块
示例: http: //geocoder.readthedocs.io/
$ pip install geocoder
Run Code Online (Sandbox Code Playgroud)
使用 CLI
$ geocode '99.240.181.199' --provider freegeoip --pretty --json
Run Code Online (Sandbox Code Playgroud)
使用Python
>>> import geocoder
>>> g = geocoder.freegeoip('99.240.181.199')
<[OK] Freegeoip - Geocode [Ottawa, Ontario Canada]>
>>> g.json
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63413 次 |
| 最近记录: |