Python查找電話號碼歸屬地、郵編、運營商信息等

# -*- coding: utf-8 -*-

1. 查找單個電話號碼html

from phone import Phone

def get_phone_info(phone_num):
    phone_info = Phone().find(phone_num)
    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'] #運營商
    except:
        print('----- the phone number is empty, please check your phone number! -----')
    return phone, province, city, zip_code, area_code, phone_type 
        
if __name__ == "__main__":
    phone_num = '177********' #輸入要查詢的電話號碼,注意只能是三大運營商的手機號碼
    if len(phone_num)==0:
        print('please input your phone number first!')
        phone_num = input("phone number:")
    phone_info = get_phone_info(phone_num) #列表返回
    print(phone_info[0]) #電話號
    print(phone_info[1]) #省份
    print(phone_info[2]) #城市
    print(phone_info[3]) #郵編
    print(phone_info[4]) #區號
    print(phone_info[5]) #運營商

2. 查找excel裏面的電話號碼函數

from phone import Phone
import xlrd
import os
import xlsxwriter

def get_phone_info(phone_num):
    phone_info = Phone().find(phone_num)
    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'] #運營商
    except:
        print('----- the phone number is empty, please check your phone number! -----')
    return phone, province, city, zip_code, area_code, phone_type 

def 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)
    
    myWorkbook = xlsxwriter.Workbook(file_name+'_get_info.xlsx')#建立一個excel文件,用於待會寫數據
    sheet_file_realname = myWorkbook.add_worksheet(file_realname)#在文件中建立一個名爲file_realname的sheet,不加名字默認爲sheet1
    bold= 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)
    
    #設置讀Excel的編碼格式
    xlrd.Book.encoding = "gbk"
    rb = xlrd.open_workbook(phone_number_path)

    sheet = rb.sheet_by_index(sheet_num) #讀第幾個sheet,默認爲第一個
    nrows = sheet.nrows
    for i in range(nrows):
        phone_num = int(sheet.cell_value(i, 0))  #假設電話號碼在第一列,從第一行開始,也就是索引(0,0),
        #int是由於讀入的時候自動變成float,會超過電話號碼長度
        phone_info = get_phone_info(phone_num)
        sheet_file_realname.write(i + 1, 0, phone_info[0])
        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])
    myWorkbook.close()

if __name__ == "__main__":
    phone_number_path = r'D:\Python_workspace\spyder_space\電話號碼.xlsx'
    get_phone_info_excel(phone_number_path)

3. 安裝phone包:pip install phone字體

4. 若是電話號碼查不到信息或者輸入的不在解析範圍內,會報錯:UnboundLocalError: local variable 'phone' referenced before assignment,那是由於並無執行get_phone_info函數的try語句,卻return了try語句中的參數形成的。編碼

參考:http://www.javashuo.com/article/p-kfvamycf-be.htmlspa

相關文章
相關標籤/搜索