使用python解析ip地址
前言
想要批量将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地址对应的经纬度,转换的速度也还比较快(三万多条数据用时在一分钟以内),转换后的省份信息精准,市的信息有些许偏差。