前言
想要批量將ip地址轉換為省份城市、國家或是經緯度?百度上的批量查找每次的容量太小滿足不了要求?第三方庫神器 - geoip2
幫你解決所有煩惱。
准備工作
- 首先安裝一下geoip2庫,
pip install geoip2
- 前往官網下載一下數據包,下載地址https://dev.maxmind.com/geoip/geoip2/geolite2/
- 將下載好的數據包放到程序的根目錄下
完整代碼
import geoip2.database
def getLoc(ip):
# 傳入下載的數據的地址
reader = geoip2.database.Reader("./GeoLite2-City_20191126/GeoLite2-City.mmdb")
data = reader.city(ip)
print("ip地址:", ip)
# names['zh-CN']即可轉換為中文
print("國家: ", data.country.names['zh-CN'])
print("省份: ", data.subdivisions.most_specific.names['zh-CN'])
print("城市: ", data.city.names['zh-CN'])
print("緯度: ", data.location.latitude)
print("經度: ", data.location.longitude)
# getLoc("59.57.149.142")
測試
本次測試的ip為 -> 59.57.149.142
百度查詢的結果👇
程序返回的結果👇
不足之處
對於中國的小部分省份與地區無法直接獲取相對應的值(不過這個庫的數據一直在更新),但是都可以獲取其ip地址對應的經緯度,轉換的速度也還比較快(三萬多條數據用時在一分鍾以內),轉換后的省份信息精准,市的信息有些許偏差。