1-Python之geoip2模块
目录
工作中难免会遇到处理ip相关的需求,比如根据ip的请求的地理位置,访问频率来调整业务。这里介绍一个处理ip相关的模块geoip2
。
首先来说安装:
pip install geoip2
安装后,我们需要下载一个ip库,用来匹配解析与ip相关的参数。点击下载,在打开的页面中,下拉选择Downloads
,这里我们选择粒度细分到城市的下载链接,这里仅介绍mmdb格式的使用方式。
在下载到本地后,我们就可以通过传递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](