1、安装库
pip install geoip2
2、下载数据资源
https://dev.maxmind.com/geoip/geoip2/geolite2/
我们可以选择CSV格式文件,也可以选择MaxMind DB格式进行处理。
这些文件会在每个星期二进行更新,其中的city文件包含城市信息,Country文件仅能定位到国家,可以根据需求自行下载。
由于IP申请每时每刻都在进行,因此IP对应的地域也是在不断发生着变化。为了尽可能让我们的本地查询更准确,需要在每次geoip资源更新后进行本地文件的更新,但这也不能保证ip地址的信息100%准确。因为这中间有一个星期左右的数据更新延迟。
3、地址解析
在使用CSV文件进行解析时,需要自己实现掩码解析和id查询,而使用MaxMind DB格式进行处理时可以借助geoip2提供的api,只要输入IP地址就可以很方便的进行本地IP信息查询。
示例代码如下:
import geoip2.database
#GeoLite2-City.mmdb文件的位置
reader = geoip2.database.Reader('./GeoLite2-City.mmdb')
response = reader.city('128.101.101.101')
response.country.iso_code
'US'
response.country.name
'United States'
response.country.names['zh-CN']
u'美国'
response.subdivisions.most_specific.name
'Minnesota'
response.subdivisions.most_specific.iso_code
'MN'
response.city.name
'Minneapolis'
response.postal.code
'55455'
response.location.latitude
44.9733
response.location.longitude
-93.2323
reader.close()