Python IP解析器 ip2region使用

說明:最近需要在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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/898277.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/898277.shtml
英文地址,請注明出處:http://en.pswp.cn/news/898277.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python開發訂單查詢功能(flask+orm bee)

1. 搭建python環境。 可以參考其它文檔。 此處python使用 3.12 IDE隨意&#xff0c;PyCharm 或 Eclipse PyDev也可以。 2. Flask 2.1 安裝Flask pip install Flask 2.2 一個最簡單的flask實例 創建一個工程&#xff0c; 新建一個 main.py文件&#xff0c; 輸入以下內容…

哈爾濱服務器租用托管流程

哈爾濱服務器租用托管流程可分為三個階段實施&#xff0c;具體操作如下&#xff1a; 一、前期準備階段 業務需求評估 明確計算資源需求&#xff1a;CPU核心數/線程數、內存容量、存儲類型(HDD/SSD/NVMe)及容量、帶寬標準(獨享/共享) 確定網絡架構要求&#xff1a;多線接入、國際…

音頻大語言模型可作為描述性語音質量評價器

論文《AUDIO LARGE LANGUAGE MODELS CAN BE DESCRIPTIVE SPEECH QUALITY EVALUATORS》學習 推動多模態代理從"能聽"到"懂好壞"的進化 摘要&#xff1a; . 研究背景與問題 核心內容&#xff1a;現有音頻大語言模型缺乏對輸入語音質量的感知能力&#xff…

CVPR2025自動駕駛端到端前沿論文匯總

自動駕駛 文章目錄 自動駕駛前言自動駕駛的軌跡預測論文端到端自動駕駛論文 前言 匯總CVPR2025自動駕駛前沿論文 自動駕駛的軌跡預測論文 Leveraging SD Map to Augment HD Map-based Trajectory PredictionModeSeq: Taming Sparse Multimodal Motion Prediction with Seque…

我在哪,要去哪

在直播間聽到一首好聽的歌《我在哪&#xff0c;要去哪》-湯倩。 遇見的事&#xff1a;21~24號抽調去招生。 感受到的情緒&#xff1a;公假嗎&#xff1f;給工作量嗎&#xff1f;月工作量不夠扣錢嗎&#xff1f;報銷方便嗎&#xff1f;有事情&#xff0c;從來不解決后顧&#x…

某快餐店用戶市場數據挖掘與可視化

1、必要庫的載入 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns2、加載并清洗數據 # 2.1 加載數據 df pd.read_csv(/home/mw/input/survey6263/mcdonalds.csv)# 2.2 數據清洗 # 2.2.1 檢查缺失值 print(缺失值情況&#xff1a;) print(df.isn…

Easysearch 索引生命周期管理實戰

如果你的使用場景是對時序型數據進行分析&#xff0c;可能你會更重視最新的數據&#xff0c;并且可能會定期對老舊的數據進行一些處理&#xff0c;比如減少副本數、forcemerge、 刪除等。Easysearch 的索引生命周期管理功能&#xff0c;可以自動完成此類索引的管理任務。 創建…

《心理學與生活》2025最新網課答案

《心理學與生活》2025最新網課答案 文章目錄 《心理學與生活》2025最新網課答案發展與教育單元測試情緒與情感單元測驗人格與動機單元測試感知與記憶單元測試文化與社會單元測試 發展與教育單元測試 題數 20 棉花糖實驗中哪些小孩長大后的表現更好&#xff08;&#xff09;。 …

Modbus通信協議基礎知識總結

1. 數據類型與存儲區分類 Modbus協議將數據分為四類存儲區&#xff0c;通過存儲區代號區分&#xff1a; 輸出線圈&#xff08;0x&#xff09;&#xff1a;可讀寫&#xff0c;對應二進制開關量&#xff08;如繼電器狀態&#xff09;&#xff0c;地址范圍000001-065536&#xff…

docker環境下安裝flink

前言 flink在實時計算領域中有著舉足輕重的地位。這篇文章來介紹一下&#xff0c;在linux的docker環境下&#xff0c;怎么快速安裝一個單機版本的flink。 操作流程 環境準備 檢查docker環境是不是正常&#xff0c;如果在拉取鏡像的時候比較慢&#xff0c;建議使用鏡像加速&…

LeetCode 2614.對角線上的質數:遍歷(質數判斷)

【LetMeFly】2614.對角線上的質數&#xff1a;遍歷(質數判斷) 力扣題目鏈接&#xff1a;https://leetcode.cn/problems/prime-in-diagonal/ 給你一個下標從 0 開始的二維整數數組 nums 。 返回位于 nums 至少一條 對角線 上的最大 質數 。如果任一對角線上均不存在質數&…

MongoDB 只能存儲能夠序列化的數據(比如字符串、數字等),而 Python 的 UUID 對象并不是直接可以存入數據庫的格式。

1. UUID 對象是什么&#xff1f; UUID 是 “Universally Unique Identifier”&#xff08;通用唯一識別碼&#xff09;的縮寫&#xff0c;是一種 128 位的數字&#xff0c;用于在全局范圍內生成一個唯一的標識符。它常用于數據庫中的記錄標識、分布式系統中的對象標識等場景。…

linux 安全 xshell 使用

目錄和文件 ls -l 查看目錄和文件的權限的設置情況 加固方法 對于重要目錄&#xff0c;建議執行如下類似操作 Chmod -R 750 /etc/rc.d/init.d/* 這樣只有root可以讀寫和執行這個目錄下的腳本 新建了一個用戶Q 寫入了一些信息 發現在root用戶下可以進行文件打開 接下來用普通用…

自動駕駛背后的數學:特征提取中的線性變換與非線性激活

在上一篇博客「自動駕駛背后的數學&#xff1a;從傳感器數據到控制指令的函數嵌套」—— 揭秘人工智能中的線性函數、ReLU 與復合函數中&#xff0c;我們初步探討了自動駕駛技術中從傳感器數據到控制指令的函數嵌套流程&#xff0c;其中提到了特征提取模塊對傳感器數據進行線性…

楊校老師課堂之編程入門與軟件安裝【圖文筆記】

親愛的同學們&#xff0c;熱烈歡迎踏入青少年編程的奇妙世界&#xff01; 我是你們的授課老師楊校 &#xff0c;期待與大家一同開啟編程之旅。 1. 輕松叩開編程之門 1.1 程序的定義及生活中的應用 程序是人與計算機溝通的工具。在日常生活中&#xff0c;像手機里的各類 APP、電…

DeepSeek 3FS 與 JuiceFS:架構與特性比較

近期&#xff0c;DeepSeek 開源了其文件系統 Fire-Flyer File System (3FS)&#xff0c;使得文件系統這一有著 70 多年歷時的“古老”的技術&#xff0c;又獲得了各方的關注。在 AI 業務中&#xff0c;企業需要處理大量的文本、圖像、視頻等非結構化數據&#xff0c;還需要應對…

Coco AI 智能檢索 Hugo Blog 集成指南

在此前的文章中&#xff0c;我們介紹了如何使用 Coco Server 連接 Notion&#xff0c;實現智能內容檢索。本次&#xff0c;我們將進一步探索如何在 Coco Server 最新版本 中集成 Hugo Site&#xff0c;以便對 Hugo 站點 進行高效檢索。 Coco Server 部署方式 要在本地或服務器…

Mobile-Agent-V:通過視頻引導的多智體協作學習移動設備操作

25年2月來自北京交大和阿里巴巴公司的論文“Mobile-Agent-V: Learning Mobile Device Operation Through Video-Guided Multi-Agent Collaboration”。 移動設備使用量的快速增長&#xff0c;迫切需要改進自動化以實現無縫任務管理。然而&#xff0c;因缺乏操作知識&#xff0…

電魚智能EFISH-RK3576-SBC工控板已適配Android 14系統

EFISH-RK3576-SBC工控板此前已提供了Linux 6.1.57系統&#xff0c;為了滿足更多客戶的需求&#xff0c;電魚智能近日又為其成功適配了Android 14系統——硬件性能卓越的核心板與Android 14的深度組合&#xff0c;將為用戶帶來更加流暢、開放、智能的使用體驗。 一、高性能處理器…

正點原子[第三期]Arm(iMX6U)Linux移植學習筆記-5.1 uboot頂層Makefile分析-VSCode工程創建

前言&#xff1a; 本文是根據嗶哩嗶哩網站上“Arm(iMX6U)Linux系統移植和根文件系統構鍵篇”視頻的學習筆記&#xff0c;在這里會記錄下正點原子 I.MX6ULL 開發板的配套視頻教程所作的實驗和學習筆記內容。本文大量引用了正點原子教學視頻和鏈接中的內容。 引用&#xff1a; …