使用python解析ip地址

前言

想要批量将ip地址转换为省份城市、国家或是经纬度?百度上的批量查找每次的容量太小满足不了要求?第三方库神器 - geoip2帮你解决所有烦恼。


准备工作
  1. 首先安装一下geoip2库,
    pip install geoip2
    
  2. 前往官网下载一下数据包,下载地址https://dev.maxmind.com/geoip/geoip2/geolite2/
    在这里插入图片描述
  3. 将下载好的数据包放到程序的根目录下

完整代码
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地址对应的经纬度,转换的速度也还比较快(三万多条数据用时在一分钟以内),转换后的省份信息精准,市的信息有些许偏差。

posted @ 2019-12-03 20:55  但是我拒绝  阅读(2284)  评论(1编辑  收藏  举报