python 本地解析IP地址所属地区信息

1、安装库

pip install geoip2

2、下载数据资源

https://dev.maxmind.com/geoip/geoip2/geolite2/

python 本地解析IP地址所属地区信息_第1张图片

 

我们可以选择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()

 

你可能感兴趣的:(python)