Python获取IP的地理位置:经纬度,国家,区域,城市
人人可以学Python .png
我们现在手机使用的定位主要是以GPS卫星为主,A-Gps,IP辅助定位。而网站还是通过浏览网页用户的IP来得到用户的地理位置,通过分析,调整业务。
GeoIP2
很多公司都是使用Maxmind网站的IP信息库,里面包含着IP的详细信息,有付费的也有免费的,收费与免费的区别就是精准度和覆盖率
GeoIP也有python的lib,有GeoIP,和GeoIP2,在这里我们就拿GeoIP2来试一试获取一个IP的地理位置。
GeoIP2安装###
安装GeoIP2还是一样:
命令安装:
pip install geoip2
也可以去Github网站下载安装:
地址:https://github.com/maxmind/GeoIP2-python
GeoIP2使用###
使用我们刚才安装的包,我们可以使用Maxmind的在线库也可以把库下载下来离线使用。
先来看看离线库的使用:
先去这里下载一个库
http://dev.maxmind.com/geoip/geoip2/geolite2
人人可以I学Python2.jpg
我这里就下载个GeoLite2 City使用。
然后我们的python代码如下:
#!/usr/bin/python #-*-coding:utf-8-*- import geoip2.database reader = geoip2.database.Reader('./GeoLite2-City.mmdb') ip = raw_input("输入你要查询的IP:\n") response = reader.city(ip) # 有多种语言,我们这里主要输出英文和中文 print("你查询的IP的地理位置是:") print("地区:{}({})".format(response.continent.names["es"], response.continent.names["zh-CN"])) print("国家:{}({}) ,简称:{}".format(response.country.name, response.country.names["zh-CN"], response.country.iso_code)) print("洲/省:{}({})".format(response.subdivisions.most_specific.name, response.subdivisions.most_specific.names["zh-CN"])) print("城市:{}({})".format(response.city.name, response.city.names["zh-CN"])) print("经度:{},纬度{}".format(response.location.longitude, response.location.latitude)) print("时区:{}".format(response.location.time_zone)) print("邮编:{}".format(response.postal.code))
试一试
(venv) allenwoo@~/renren/code$ python test.py 输入你要查询的IP: 112.74.207.96 你查询的IP的地理位置是: 地区:Asia(亚洲) 国家:China(中国) ,简称:CN 洲/省:Zhejiang(浙江省) 城市:Hangzhou(杭州) 经度:120.1614,纬度30.2936 时区:Asia/Shanghai 邮编:None
再来一个:
(venv) allenwoo@~/renren/code$ python test.py 输入你要查询的IP: 223.192.2.165 你查询的IP的地理位置是: 地区:Asia(亚洲) 国家:China(中国) ,简称:CN 洲/省:Beijing(北京市) 城市:Beijing(北京) 经度:116.3883,纬度39.9289 时区:Asia/Shanghai 邮编:None
2.至于在线库的使用是需要一个license_key
只有前面两步不太一样
连接: client = geoip2.webservice.Client(42, <license_key>)
查询 IP: response = client.insights(<IP>)
好了,到此为止,谢谢!
原文地址:https://www.jianshu.com/p/eb756fc2d3b8
相关推荐
-
Python档案袋(函数与函数装饰器 ) python基础
2019-10-9
-
3 个 Python 命令行工具 python基础
2019-2-21
-
更好的使用Pycharm python基础
2019-2-26
-
python实现快速排序的两种方法 python基础
2020-6-17
-
PACKT每日限免技术书籍自动领取工具 python基础
2019-8-25
-
HBase Thrift with Python (Kerberos) python基础
2019-5-11
-
Python 装饰器的理解 python基础
2018-2-26
-
Python内置函数详解 python基础
2019-7-21
-
使用 Python 学习和破解古典密码 python基础
2019-8-25
-
Python下web服务器的原始实现(socket实现) python基础
2019-8-25