批量查询手机号码运营商信息

news/2024/11/16 9:02:26/

项目场景:

批量查询手机号码信息


问题描述:

有同事需要批量查询手机号码的运营商,归属地区号信息

思路:

  1. 百度搜索,爬虫取数,学的不精暂时还不会直接放弃
  2. python 自带一个phone库,缺点是查不到虚拟号码不过也够用了

完整代码:

话不多说上代码


from phone import Phone
import xlrd
import os
import xlsxwriter
import tkinter.messagebox
from tkinter import *def get_phone_info(phone_num):phone_info = Phone().find(phone_num)if phone_info is None:phone =  phone_numprovince ='Null'   # 省city =  'Null'  # 城市zip_code ='Null'    # 邮编area_code = 'Null'   # 区号phone_type = 'Null'  # 运营商phone_count ='null'return phone, province, city, zip_code, area_code, phone_type,phone_countelse:try:phone = phone_info['phone']province = phone_info['province']  # 省city = phone_info['city']  # 城市zip_code = phone_info['zip_code']  # 邮编area_code = phone_info['area_code']  # 区号phone_type = phone_info['phone_type']  # 运营商if province==city:phone_count = province+phone_type # 汇总else:phone_count = province+city+phone_type  # 汇总phone_info['phone_count']=phone_countexcept:print('----- the phone number is empty, please check your phone number! -----')print(phone_info)return phone, province, city, zip_code, area_code, phone_type, phone_countdef get_phone_info_excel(phone_number_path, sheet_num=0):# 解析地址file_name = os.path.splitext(phone_number_path)[0]file_realname = file_name.split('\\')[-1]  # 文件名print(file_realname)exclename = file_name + '_get_info.xlsx'myWorkbook = xlsxwriter.Workbook(exclename)  # 创建一个excel文件,用于待会写数据sheet_file_realname = myWorkbook.add_worksheet(file_realname)  # 在文件中创建一个名为file_realname的sheet,不加名字默认为sheet1bold = myWorkbook.add_format({'bold': True})  # 设置一个加粗的格式对象# workfomat = workbook.add_format({# 'bold' : True,                 #字体加粗# 'border' : 1,                    #单元格边框宽度# 'align' : 'center',          #对齐方式# 'valign' : 'vcenter',         #字体对齐方式# 'fg_color' : '#F4B084',         #单元格背景颜色# })sheet_file_realname.write(0, 0, u'电话号', bold)  # 给第一行加标签sheet_file_realname.write(0, 1, u'省份', bold)sheet_file_realname.write(0, 2, u'城市', bold)sheet_file_realname.write(0, 3, u'邮编', bold)sheet_file_realname.write(0, 4, u'区号', bold)sheet_file_realname.write(0, 5, u'运营商', bold)sheet_file_realname.write(0, 6, u'汇总', bold)# 设置读Excel的编码格式xlrd.Book.encoding = "gbk"rb = xlrd.open_workbook(phone_number_path)sheet = rb.sheet_by_index(sheet_num)  # 读第几个sheet,默认为第一个nrows = sheet.nrowsprint(nrows)for i in range(nrows):phone_num = sheet.cell_value(i, 0) # 假设电话号码在第一列,从第一行开始,也就是索引(0,0),if isinstance(phone_num,float):phone_num=str(int(phone_num))else:phone_num=phone_numif '-' in phone_num:phone_num1 =phone_num.split('-')[1]if len(phone_num1) >=7 and len(phone_num1) <=11:phone_num1 = int(phone_num1)# int是因为读入的时候自动变成float,会超过电话号码长度phone_info = get_phone_info(phone_num1)sheet_file_realname.write(i + 1, 0, phone_num)sheet_file_realname.write(i + 1, 1, phone_info[1])sheet_file_realname.write(i + 1, 2, phone_info[2])sheet_file_realname.write(i + 1, 3, phone_info[3])sheet_file_realname.write(i + 1, 4, phone_info[4])sheet_file_realname.write(i + 1, 5, phone_info[5])sheet_file_realname.write(i + 1, 6, phone_info[6])else:# int是因为读入的时候自动变成float,会超过电话号码长度sheet_file_realname.write(i + 1, 0, phone_num)sheet_file_realname.write(i + 1, 1, 'Null')sheet_file_realname.write(i + 1, 2, 'Null')sheet_file_realname.write(i + 1, 3, 'Null')sheet_file_realname.write(i + 1, 4, 'Null')sheet_file_realname.write(i + 1, 5, 'Null')sheet_file_realname.write(i + 1, 6, 'Null')else:phone_num1 = re.sub('[(),]','',phone_num)if len(phone_num1) >=7 and len(phone_num1) <=11:phone_num1 = int(phone_num1)# int是因为读入的时候自动变成float,会超过电话号码长度phone_info = get_phone_info(phone_num1)sheet_file_realname.write(i + 1, 0, phone_num)sheet_file_realname.write(i + 1, 1, phone_info[1])sheet_file_realname.write(i + 1, 2, phone_info[2])sheet_file_realname.write(i + 1, 3, phone_info[3])sheet_file_realname.write(i + 1, 4, phone_info[4])sheet_file_realname.write(i + 1, 5, phone_info[5])sheet_file_realname.write(i + 1, 6, phone_info[6] )else:# int是因为读入的时候自动变成float,会超过电话号码长度sheet_file_realname.write(i + 1, 0, phone_num)sheet_file_realname.write(i + 1, 1, 'Null')sheet_file_realname.write(i + 1, 2, 'Null')sheet_file_realname.write(i + 1, 3, 'Null')sheet_file_realname.write(i + 1, 4, 'Null')sheet_file_realname.write(i + 1, 5, 'Null')sheet_file_realname.write(i + 1, 6, 'Null')myWorkbook.close()print(os.path.realpath(exclename))tkinter.messagebox.showinfo('新生新的文件路径', os.path.realpath(exclename))if __name__ == "__main__":pwd = os.getcwd()phone_number_path = os.path.join(pwd,'电话号码.xlsx')print(phone_number_path)get_phone_info_excel(phone_number_path)

成果展现

在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/724905.html

相关文章

知识点速记 | 本机号码一键登录?

目录 中国移动 中国电信 很多 APP 的目前都支持「本机号码一键登录」功能。本机号码一键登录是基于运营商独有网关认证能力推出的账号认证产品。用户只需一键授权&#xff0c;即可实现以本机号码注册/登录&#xff0c;相比先前的短信验证码流程体验更优。 目前市面上有很多厂…

手机号码归属地查询 - 一刀工具

手机号码归属地快速查询移动&#xff0c;联通&#xff0c;电信手机号码归属地&#xff0c;免费手机号码运营商查询&#xff0c;手机归属地查询大全。 代码片段 //获取手机信息static function getMobile($mobile){try {$phone new PhoneHelper();$res $phone->setPhone($m…

JSP网上手机商城系统 用eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 JSP 网上手机商城系统是一套完善的web设计系统&#xff0c;对理解JSP java SERLVET mvc编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,eclipse开发&#xff0c;数据库为Mysql5.0&a…

如何快速查询手机号码归属地和运营商

最近公司项目需要做一个快速查询手机号码归属地和运营商的小功能&#xff0c;想着如果用现成的API就可以大大提高开发效率&#xff0c;所以在网上的API商店搜索了一番&#xff0c;发现了 APISpace&#xff0c;它里面的手机号码归属地和运营商查询API非常符合我的开发需求。 手…

手机号码信息查询器

发送SOAP数据给服务器调用webservice&#xff0c;实现手机号归属地查询

car music

正常车载U盘即可 车载不可用的U盘 车载需要改进遍历文件夹

Android网络安全配置network_security_config

Android开发过程中&#xff0c;如果出现网络请求错误&#xff0c;测试经常会抓包来查看请求的情况。 在Android6.0 及以下系统可以抓包&#xff0c;而 Android7.0 及以上系统不能再抓包了&#xff0c;因为Android7.0及以上系统版本新增了证书验证&#xff0c;所以 app 内不再像…

webgl未使用独立显卡报告

0x00 楔子 最近客户在使用我们的的三维可视化平台的时候&#xff0c;总是会出现浏览器崩溃&#xff0c;webgl context lost的情况。 这种请一般出现在电脑配置很低的电脑上&#xff0c;比如没有独显&#xff0c;只有很小现存的集成显卡的电脑。 但是客户的电脑大部分都是配置…