Skip to content

工作中难免会遇到处理ip相关的需求,比如根据ip的请求的地理位置,访问频率来调整业务。这里介绍一个处理ip相关的模块geoip2

首先来说安装:

pip install geoip2

安装后,我们需要下载一个ip库,用来匹配解析与ip相关的参数。点击下载,在打开的页面中,下拉选择Downloads,这里我们选择粒度细分到城市的下载链接,这里仅介绍mmdb格式的使用方式。

1832670296142774272.png

在下载到本地后,我们就可以通过传递ip或查看该ip的相关信息了。

import geoip2.database
client = geoip2.database.Reader(r'.\my_data\GeoLite2-City.mmdb')
response = client.city('128.101.101.101')
print(response.country.iso_code)    # 国际标准码中的位置
print(response.location.latitude)   # 维度
print(response.location.longitude)   # 经度
print(response.location.time_zone)   # 时区
print(response.city.name)  # 城市 Saint Paul
print(response)   # 更多参考 ↓
'''
geoip2.models.City({'city': {'geoname_id': 5045360, 'names': {'de': 'Saint Paul', 'en': 'Saint Paul', 'es': 'Saint Paul', 'fr': 'Saint Paul', 'ja': 'セントポール', 'pt-BR': 'Saint Paul', 'ru': 'Сент-Пол', 'zh-CN': '圣保罗'}}, 'continent': {'code': 'NA', 'geoname_id': 6255149, 'names': {'de': 'Nordamerika', 'en': 'North America', 'es': 'Norteamérica', 'fr': 'Amérique du Nord', 'ja': '北アメリカ', 'pt-BR': 'América do Norte', 'ru': 'Северная Америка', 'zh-CN': '北美洲'}}, 'country': {'geoname_id': 6252001, 'iso_code': 'US', 'names': {'de': 'USA', 'en': 'United States', 'es': 'Estados Unidos', 'fr': 'États-Unis', 'ja': 'アメリカ合衆国', 'pt-BR': 'Estados Unidos', 'ru': 'США', 'zh-CN': '美国'}}, 'location': {'accuracy_radius': 20, 'latitude': 44.9548, 'longitude': -93.1551, 'metro_code': 613, 'time_zone': 'America/Chicago'}, 'postal': {'code': '55104'}, 'registered_country': {'geoname_id': 6252001, 'iso_code': 'US', 'names': {'de': 'USA', 'en': 'United States', 'es': 'Estados Unidos', 'fr': 'États-Unis', 'ja': 'アメリカ合衆国', 'pt-BR': 'Estados Unidos', 'ru': 'США', 'zh-CN': '美国'}}, 'subdivisions': [{'geoname_id': 5037779, 'iso_code': 'MN', 'names': {'en': 'Minnesota', 'es': 'Minnesota', 'fr': 'Minnesota', 'ja': 'ミネソタ州', 'pt-BR': 'Minesota', 'ru': 'Миннесота', 'zh-CN': '明尼苏达州'}}], 'traits': {'ip_address': '128.101.101.101'}}, ['en'])
'''

that's all see also:MaxMind GeoIP2 Python API | PYPI:geoip2 2.9.0 | GeoLite2 Free Downloadable Databasesmind.com/geoip/geoip2/geolite2/)