您的位置:首页 > 健康 > 美食 > 福建seo优化_ui界面交互设计_高端定制网站建设_文案代写在哪里接单子

福建seo优化_ui界面交互设计_高端定制网站建设_文案代写在哪里接单子

2025/3/22 22:09:22 来源:https://blog.csdn.net/yexiaomodemo/article/details/146341545  浏览:    关键词:福建seo优化_ui界面交互设计_高端定制网站建设_文案代写在哪里接单子
福建seo优化_ui界面交互设计_高端定制网站建设_文案代写在哪里接单子

说明:最近需要在python项目内使用IP定位所在城市的需求,没有采用向外部ISP服务商API请求获取信息的方案,则翻了翻,在搞Java时很多的方案,在Python端反而可选择范围很小。

# 示例查询
ips = ["106.38.188.214", "203.93.215.16", "106.38.188.100", 
"221.130.191.216", "47.98.14.174"]

一:geoip2 定位五个IP效果


二:ip2region 定位五个IP效果

问题说明:本文除了对比这两个IP解释器,同时还是为了使用当前的ip2region在Python环境的使用,因为ip2region在Python项目内无法安装模块,导致我花不少时间才搞定,大家走这个路线就好了,避免大家遇到同样当不必要的其他阻碍

1. 下载 ip2region 项目资源

我们主要采用的是离线模式的ip2region,首先手动从 GitHub 下载 ip2region 解析器

  • ip2region.xdb 数据库文件: 点击下载
  • xdb_searcher.py(官方解析器):点击下载

 2. 创建ip2region工具类

工具类名称大家自定义即可,我的类目:ip_utils_ip2region.py

import os
from utils.ip.xdbSearcher import XdbSearcher
from loguru import loggerclass IP2RegionInfo:"""todo 存储 IP 解析出来的相关信息"""def __init__(self, country=None, province=None, city=None, isp=None):self.country = countryself.province = provinceself.city = cityself.isp = ispdef __str__(self):return f"{self.country},{self.province},{self.city},{self.isp}"class IP2RegionLoader:"""todo ip2region数据加载器-单例模式"""_searcher = None@classmethoddef get_searcher(cls):if cls._searcher is None:# 获得指定文件的绝对路径-本次模式使用的当前python函数所在文件夹的目录db_path = os.path.join(os.path.dirname(__file__), "ip2region.xdb")if not os.path.exists(db_path):raise FileNotFoundError("请下载 ip2region.xdb 并修改路径!")try:# 加载 xdb 数据库cls._searcher = xdbSearcher.XdbSearcher(dbfile=db_path)logger.info("成功加载 ip2region.xdb 数据库")except Exception as e:logger.error(f"加载数据库时出错: {e}")raisereturn cls._searcher@classmethoddef close_searcher(cls):if cls._searcher is not None:cls._searcher.close()cls._searcher = Nonelogger.info("已关闭 ip2region 数据库搜索器")# 查询 IP 地址的具体信息
def ip2region_location_ip(ip):try:searcher = IP2RegionLoader.get_searcher()result = searcher.search(ip)# 解析查询结果:ip2region 返回的格式类似于 "国家|省份|城市|ISP"region_info = result.split('|')if len(region_info) < 4:logger.warning(f"IP {ip} 查询结果格式异常: {result}")return IP2RegionInfo()# 构造 IP2RegionInfo 对象ip_info = IP2RegionInfo(country=region_info[0], province=region_info[2], city=region_info[3],isp=region_info[4])return ip_infoexcept Exception as e:logger.error(f"查询 IP {ip} 时发生错误: {e}")return Noneif __name__ == '__main__':# 示例查询ips = ["106.38.188.214", "203.93.215.16", "106.38.188.100", "221.130.191.216", "47.98.14.174"]for ip in ips:result = ip2region_location_ip(ip)if result:logger.info(f"IP {ip} 归属地信息: {result}")else:logger.error(f"IP {ip} 查询失败!")# 关闭搜索器IP2RegionLoader.close_searcher()

3. 资源文件关系目录

三个文件的文件关系目录,先跑起来,然后大家做自己的自定义哈,如图所示:

OK,这样就搞定了,直接运行即可,可以直接当成一个工具函数使用,祝各位编程顺利

这是近一年来转人工智能方向后,今年开始第三篇文章!

资源上传到了这儿

我用夸克网盘分享了「python_ip2Region_code.rar」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
链接:https://pan.quark.cn/s/25b5dbb70fff
提取码:VJQT

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com