网站建设可行性报告范文,电商类网站怎么做 seo,源码网站,医疗网站设计网站说明#xff1a;最近需要在python项目内使用IP定位所在城市的需求#xff0c;没有采用向外部ISP服务商API请求获取信息的方案#xff0c;则翻了翻#xff0c;在搞Java时很多的方案#xff0c;在Python端反而可选择范围很小。
# 示例查询
ips [106.38.188.214最近需要在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, countryNone, provinceNone, cityNone, ispNone):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 Noneclassmethoddef 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(dbfiledb_path)logger.info(成功加载 ip2region.xdb 数据库)except Exception as e:logger.error(f加载数据库时出错: {e})raisereturn cls._searcherclassmethoddef 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 返回的格式类似于 国家|省份|城市|ISPregion_info result.split(|)if len(region_info) 4:logger.warning(fIP {ip} 查询结果格式异常: {result})return IP2RegionInfo()# 构造 IP2RegionInfo 对象ip_info IP2RegionInfo(countryregion_info[0], provinceregion_info[2], cityregion_info[3],ispregion_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(fIP {ip} 归属地信息: {result})else:logger.error(fIP {ip} 查询失败)# 关闭搜索器IP2RegionLoader.close_searcher()3. 资源文件关系目录
三个文件的文件关系目录先跑起来然后大家做自己的自定义哈如图所示 OK这样就搞定了直接运行即可可以直接当成一个工具函数使用祝各位编程顺利
这是近一年来转人工智能方向后今年开始第三篇文章
资源上传到了这儿
我用夸克网盘分享了「python_ip2Region_code.rar」点击链接即可保存。打开「夸克APP」无需下载在线播放视频畅享原画5倍速支持电视投屏。 链接https://pan.quark.cn/s/25b5dbb70fff 提取码VJQT