Python 实现手机号归属地查询工具
引言
在网络安全、用户验证及数据分析场景中,获取手机号码的归属地信息是一项常见需求。通过 Python 编写脚本,可以自动化完成这一查询过程,提高处理效率。本文将详细介绍如何利用 Python 第三方库实现手机号归属地查询,并结合 IP 地址查询功能,构建一个完整的命令行工具。
环境准备
确保已安装 Python 3.6 及以上版本。使用 pip 包管理器安装所需的依赖库。在终端或命令行中执行以下命令:
pip install phone
注意:部分库可能需要特定版本的 Python 支持,建议在使用前查阅官方文档。如果遇到安装失败,请尝试升级 pip 或使用国内镜像源:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple phone
核心库介绍
本方案主要使用 phone 库。该库封装了手机号段解析逻辑,能够根据号码前七位匹配运营商和归属地信息。其内部通常维护了一个本地的号段数据库,查询速度较快且无需联网调用外部 API。
安装与验证
安装完成后,可以通过以下简单代码验证库是否正常工作:
from phone import Phone
p = Phone()
result = p.find("13800138000")
print(result)
如果输出包含归属地信息,则说明安装成功。若报错,请检查 Python 版本兼容性。
代码实现详解
为了构建一个实用的工具,我们需要完善输入验证、错误处理以及命令行参数解析。
1. 基础查询函数
封装查询逻辑,增加异常捕获,防止因非法号码导致程序崩溃。同时优化返回数据结构,便于后续处理。
from phone import Phone
class PhoneUtil:
def __init__(self):
try:
self.phone_obj = Phone()
except Exception as e:
print(f"初始化失败:{e}")
self.phone_obj = None
def parse_phone_num(self, phone_num: str) -> dict:
"""
解析手机号归属地
:param phone_num: 11 位手机号码字符串
:return: 包含归属地信息的字典,失败返回空字典
"""
phone_num (phone_num) != :
{: , : }
phone_num.isdigit():
{: , : }
:
.phone_obj:
result = .phone_obj.find(phone_num)
{: , : result}
:
{: , : }
Exception e:
{: (e), : }


