1.安装GeoLiteCity(它是一个开源数据库,将IP地址与其所在的城市一一对应)
(1)英文网站下载
https://dev.maxmind.com/geoip/legacy/geolite/#Downloads
从2019年1月2日开始,最后一次的版本构建将从该网站上删除。GeoLite Legacy数据库用户将需要切换到GeoLite 2或商用GeoIP数据库,并在2019年1月2日前更新他们的集成。
(2)中文网站下载
2.安装pygeoip(它是一个纯python库,结合GeoLiteCity,通过给定的IP地址查询数据库,从而得到某个城市的名称、精度、纬度以及该城市所在的国家名称等信息)
(A)在线安装
pip install pygeoip 或者sudo pip install pygeoip
(B)先下载,然后安装(下载地址:https://pypi.org/project/pygeoip/#files)
# !/bin/usr/env python
import pygeoip
geo = pygeoip.GeoIP('/home/fs/GeoLiteCity.dat')
def printRecord(ip):
record = geo.record_by_name(ip) #record = geo.record_by_addr(ip)也可以
#city = record['metro_code']
city = record['city'] #城市名称
time = record['time_zone'] #时区
reg = record['region_code'] #地区代码
country = record['country_code'] #国家名称
lon = record['longitude'] #经度
lat = record['latitude'] #纬度
print '==>' + str(city) + '||' + str(reg) + '||' + str(country) + '||' + \
str(time)
print '==> latitude: ' + str(lat) + ' || longitude: ' + str(lon)
ip = "123.125.115.110"
printRecord(ip)