ip2region
ip2region - 离线的ip地址查询库,ip到地区的映射库,提供二进制,B树,内存搜索三种查询算法,查询速度非常快。
支持Java,PHP,C,Python,Nodejs,Golang,C#等语言,本文以Python为例

一、前期准备

  1. 在GitHub上克隆下来源文件
    https://github.com/lionsoul2014/ip2region

    下载完的文件:

  2. 解压后很轻易就分辨出来各个文件夹的作用(挨个文件夹点了一遍☹)

    注:

    1. 脚本涉及到了Python、Java、PHP、C、Nodejs、Golang、C#等多种语言
    2. 数据库文件会不定期更新,详情请参考1中的下载地址

二、简单使用(以Python为例)

  1. 单个查询(直接使用大佬的脚本工具进行查询)

    python binding/python/testSearcher.py ./data/ip2region.db #python 脚本文件 数据库文件
    

    注意运行时的脚本文件路径数据库文件路径

  2. 批量查询

    由于需求不同(本人需要的是批量查询),所以在大佬的脚本工具基础上进行符合本人需求的扩展

    首先把ip2region-master\data\ip2region.dbip2region-master\binding\python\ip2Region.py复制出来,并创建一个自己的py文件ipaddr_query.py

    ip2region.db:数据库文件
    ip2Region.py:调用数据库的脚本工具

ipaddr_query.py里的代码如下:

from ip2Region import Ip2Region #此处导入的是刚才复制的py文件
db_file = './data/ip2region.db'  #数据库文件路径
search_file = './search_file.txt' #查询文件:每行一个ip
result_file = './result_file.txt' #结果文件:每行一个ip结果
def ip_search():#打开需要查询的文件with open(search_file,'r',encoding='utf-8') as search_file_r:search_file_lines = search_file_r.readlines()#打开结果文件,准备写入with open(result_file,'a',encoding='utf-8') as result_file_w:searcher = Ip2Region(db_file) #实例化for line in search_file_lines:ip = line.strip('\n')#判断是不是ip,isip这个函数是Ip2Region里写好的,直接用if searcher.isip(ip):#三种算法任选其一data = searcher.btreeSearch(ip) #B树# data = searcher.binarySearch(line) #二进制# data = searcher.memorySearch(line) #内存result_file_w.write("%s|%s\n" % (ip, data["region"].decode('utf-8')))print("%s|%s" % (ip, data["region"].decode('utf-8')))else:result_file_w.write('%s|错误数据\n'%ip)print('%s|错误数据'%ip)searcher.close() #关闭if __name__ == "__main__":ip_search()

GitHub地址:https://github.com/lionsoul2014/ip2region
再次感谢大佬的分享,如有其它问题欢迎留言私信

python +ip2region 离线IP库地址文件实现秒级查询ip归属地址相关推荐

  1. php基于新浪ip库获取城市,PHP基于新浪IP库获取IP详细地址的方法

    [导读]这篇文章主要介绍了PHP基于新浪IP库获取IP详细地址的方法,涉及php正则.curl及编码转换相关操作技巧 本文实例讲述了PHP基于新浪IP库获取IP详细地址的方法.代码如下<?php ...

  2. 安卓app服务器地址文件夹,查看安卓app的服务器地址

    查看安卓app的服务器地址 内容精选 换一换 robox脚本里的docker run命令中的镜像名称要改成本地自己注册的名称.(名称为:镜像注册中的名称,也可以通过docker images查看)设置 ...

  3. 毫秒级查询的离线IP地址定位库,太实用了!

      大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!   咱们程序员开发任何系统, ...

  4. C# 调用IP库(QQWry.Dat)查询IP位置及自动升级IP库方法(附IP库下载地址及相关dll下载)

    前言 C# 用IP地址(123.125.114.144)查询位置(北京市百度公司)的东西,非常好用也非常方便,可手动升级刷新IP库,一次编码永久收益,可支持winform.asp.net等程序. 本文 ...

  5. C# 调用IP库(QQWry.Dat)查询IP位置及自动升级IP库方法(附IP库下载地址及相关dll下载)...

    前言 C# 用IP地址(123.125.114.144)查询位置(北京市百度公司)的东西,非常好用也非常方便,可手动升级刷新IP库,一次编码永久收益,可支持winform.asp.net等程序. 本文 ...

  6. 纯真IP库的结构分析及一个查询类

    个人网站上有个功能,记录访问者的IP及其归属地.最初我偷懒通过一个WebService来查询IP归属地,后来觉得通过这种方法响应时间长,资源耗费大,而且对那个WebSerice的依赖度太高,如果它挂了 ...

  7. 数仓建设之IP库的匹配

    数仓建设之IP库的匹配 一.业务前提 二.解决过程 01)增加运行资源 02)通过增加切分块大小,减少实例数 03)明细表和ip库通过join方式 04)mapjoin内存方式 05)将IP库展开,进 ...

  8. C# 调用IP库(QQWry.Dat)查询IP位置及自动升级IP库方法【转】

    前言 C# 用IP地址(123.125.114.144)查询位置(北京市百度公司)的东西,非常好用也非常方便,可手动升级刷新IP库,一次编码永久收益,可支持winform.asp.net等程序. 本文 ...

  9. qq纯真IP库安装及更新

    QQ纯真IP库和命令,其主要功能就是把一些网络工具的输出的IP字符串,附加上地理位置信息(使用纯真数据库).例如218.65.137.1会变成218.65.137.1[广西南宁市电信]. qqwry. ...

最新文章

  1. usaco Snail Trails
  2. c语言 12大于12么,【C语言】第十二章
  3. Vmware 没有vmnet8虚拟网卡、解决方法就是:刷机
  4. javascript:可以运行的噪音
  5. 表单中的只读和禁用属性
  6. 如何才能学好单片机?​
  7. 《我的第一本算法书》 - 学习记录
  8. dubbo服务化最佳实践
  9. C# 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集...
  10. 洛谷P3369-----普通平衡树
  11. clion opencv安装_Mac 下搭建 Clion + OpenCV4.x 的开发环境
  12. centos 安装gcc
  13. TDengine C/C++ Connector
  14. 爬虫案例 Zzz番 动漫下载
  15. Waiting for Jenkins to finish collecting data
  16. 九章算术 五:《商功》
  17. 传输线模式<TEM TE TM EH HE>
  18. 用HTML+CSS实现百度静态页面
  19. 东财《人力资源管理X》综合作业
  20. Kaggle泰坦尼克号船难--逻辑回归预测生存率

热门文章

  1. 【PS必备】各系色卡对照表
  2. Struts 2漏洞及其影响版本(记录备查)
  3. 磁盘分区克隆:操作系统迁移工具更换硬盘怎么操作?
  4. 软件开发顶尖高手的杀手锏SQL语句
  5. 报关单上常出现的英文单词缩写
  6. 卡巴斯基:移动MM的新榜样
  7. 达内学python_通过在达内学习python我的职场之路更加宽广了
  8. sql求中位数、四分位数
  9. 克隆Centos之后,ifconfig得不到ip地址,mac地址冲突
  10. Shell正则表达式 三剑客之grep