目錄
工作中難免會遇到處理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](