最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)號(hào)碼歸屬地查詢(xún)功能

 更新時(shí)間:2022年12月30日 11:45:14   作者:AKAD5  
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)對(duì)手機(jī)號(hào)碼進(jìn)行地域分析并查詢(xún)歸屬地的功能,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

使用場(chǎng)景

對(duì)手機(jī)號(hào)碼進(jìn)行地域分析,需要查詢(xún)歸屬地;

問(wèn)題描述

針對(duì)數(shù)據(jù)集比較大的情況,通過(guò)腳本來(lái)處理,使用多線(xiàn)程的方法來(lái)加快查詢(xún)速度

pool = multiprocessing.Pool(processes=pool_count)
    for i in data_cut(data,pool_count):
        data_log_list.append(pool.apply_async(main, (i,)))
    pool.close()
    pool.join()

解決方案

創(chuàng)建一個(gè) pool 進(jìn)程池,然后通過(guò)data_cut將數(shù)據(jù)讀取并且等分成數(shù)據(jù)組,設(shè)置好pool_count進(jìn)程數(shù)量就可以開(kāi)始,每個(gè)數(shù)據(jù)組獨(dú)立查詢(xún)?nèi)缓髮⒔Y(jié)果匯總給push_log進(jìn)行最終處理,保存為csv文件。

# 電話(huà)號(hào)碼歸屬地查詢(xún)

import os
import sys
import time
import json
import warnings
import pandas as pd
import multiprocessing
from phone import Phone
warnings.filterwarnings("ignore")
path = os.path.abspath(".")

def data_cut(data_list,data_cut=4):
    #將任務(wù)拆分,建議拆分?jǐn)?shù)為CPU核心數(shù),默認(rèn)為4
    #分組數(shù)據(jù),分組間隔
    data_all=[]
    if data_cut > len(data_list):
        data_cut = len(data_list)
    data_cut_num = int((len(data_list)+1)/data_cut)
    for i in range(1,data_cut+1):
        if i < data_cut:
            data_1=data_list[data_cut_num*(i-1):data_cut_num*i]
        else:
            data_1=data_list[data_cut_num*(i-1):]
        data_all.append(data_1)
    return data_all

def push_log(data_log_list,file_name):
    data_all = []
    data_list = [i.get() for i in data_log_list]
    for i in data_list:
        for j in i:
            data_all.append(j)
    data_all = pd.DataFrame(data_all)
    data_all.to_csv(path + "/phone_{}.csv".format(file_name),index=False,encoding='gbk')

    print('成功查詢(xún):',data_all.shape[0])

def main(data):
    resp = []
    for i in data:
        try:
            if type(Phone().find(i)) == dict:
                resp.append(Phone().find(i))
        except:
            pass
    return resp

if __name__ == '__main__':
    start_time= time.time()
    file_name = name = sys.argv[1]
    data = pd.read_table(path + "/{}".format(file_name),header=None)
    data=list(data[0])
    pool_count = 12
    data_log_list = []
    pool = multiprocessing.Pool(processes=pool_count)
    for i in data_cut(data,pool_count):
        data_log_list.append(pool.apply_async(main, (i,)))
    pool.close()
    pool.join()

    push_log(data_log_list,file_name)
    print(time.time()-start_time)

方法補(bǔ)充

除了上文的方法,小編還為大家整理了一些其他Python號(hào)碼歸屬地查詢(xún)的方法,需要的可以參考一下

方法一:

import requests

def get_callerloc(phone):
    url = f"https://www.qvdv.com/tools/qvdv-api-mobile.html?f=json&mobile={phone}"
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36',
    }
    response = requests.request("GET", url, headers=headers).json()
    return response["message"]

if __name__ == '__main__':
    phone = input("請(qǐng)輸入手機(jī)號(hào)(查詢(xún)歸屬地):")
    res = get_callerloc(phone)
    print("手機(jī)號(hào)碼:"+res["mobile"])
    print("歸屬地:"+res["province"])
    print("運(yùn)營(yíng)商:"+res["supplier"])

截圖

方法二

GUI

from tkinter import *
from tkinter import ttk
from tkinter import messagebox
from Get_Attr import Get_Infos
import re
import threading
class App:
def __init__(self):
self.root=Tk()
self.root.title('手機(jī)號(hào)碼歸屬地查詢(xún)-v1.0')
self.root.resizable(0,0)
width=410
height=390
left=(self.root.winfo_screenwidth()-width)/2
top=(self.root.winfo_screenheight()-height)/2
self.root.geometry('%dx%d+%d+%d'%(width,height,left,top))
self.create_widet()
self.set_widget()
self.place_widget()
self.root.mainloop()
def create_widet(self):
self.l1=ttk.Label(self.root)
self.e1=ttk.Entry(self.root)
self.b1=ttk.Button(self.root)
self.lf=ttk.LabelFrame(self.root)
self.l2=ttk.Label(self.lf)
self.e2=ttk.Entry(self.lf)
self.l3=ttk.Label(self.lf)
self.e3=ttk.Entry(self.lf)
self.l4=ttk.Label(self.lf)
self.e4=ttk.Entry(self.lf)
self.l5=ttk.Label(self.lf)
self.e5=ttk.Entry(self.lf)
self.l6=ttk.Label(self.lf)
self.e6=ttk.Entry(self.lf)
self.l7=ttk.Label(self.lf)
self.e7=ttk.Entry(self.lf)
self.b1.config(command=lambda:self.thread_it(self.search_infos))
def set_widget(self):
self.e2_var=StringVar()
self.e3_var=StringVar()
self.e4_var=StringVar()
self.e5_var=StringVar()
self.e6_var=StringVar()
self.e7_var=StringVar()
self.l1.config(text='請(qǐng)輸入手機(jī)號(hào):')
self.b1.config(text='查詢(xún)')
self.lf.config(text='查詢(xún)結(jié)果')
self.l2.config(text='手機(jī)號(hào)碼:')
self.l3.config(text='所屬省份:')
self.l4.config(text='所屬城市:')
self.l5.config(text='區(qū)   號(hào):')
self.l6.config(text='郵   編:')
self.l7.config(text='類(lèi)   型:')
#將字符串變量綁定Entry組件
self.e2.config(textvariable=self.e2_var)
self.e3.config(textvariable=self.e3_var)
self.e4.config(textvariable=self.e4_var)
self.e5.config(textvariable=self.e5_var)
self.e6.config(textvariable=self.e6_var)
self.e7.config(textvariable=self.e7_var)
self.root.bind('<Escape>',self.escape)
self.root.bind('<Return>',self.do_search)
def place_widget(self):
self.l1.place(x=30,y=20)
self.e1.place(x=130,y=20)
self.b1.place(x=290,y=20)
self.lf.place(x=30,y=60,width=350,height=300)
self.l2.place(x=60,y=10)
self.e2.place(x=150,y=10)
self.l3.place(x=60,y=50)
self.e3.place(x=150,y=50)
self.l4.place(x=60,y=90)
self.e4.place(x=150,y=90)
self.l5.place(x=60,y=130)
self.e5.place(x=150,y=130)
self.l6.place(x=60,y=170)
self.e6.place(x=150,y=170)
self.l7.place(x=60,y=210)
self.e7.place(x=150,y=210)
def search_infos(self):
pn=self.e1.get()
#判斷輸入類(lèi)型,必須為11位數(shù)字
if re.match('\d{11}',pn):
result=Get_Infos().get_infos(pn)
self.e2_var.set(pn)
self.e3_var.set(result['province'])
self.e4_var.set(result['city'])
self.e5_var.set(result['areacode'])
self.e6_var.set(result['zip'])
self.e7_var.set(result['company'])
else:
messagebox.showwarning('警告','輸入有誤,請(qǐng)檢查!')
#使用線(xiàn)程防止UI界面卡死
def thread_it(self,func,*args):
t=threading.Thread(target=func,args=args)
t.setDaemon(True)
t.start()
def escape(self,event):
self.root.destroy()
def do_search(self,event):
self.thread_it(self.search_infos())
if __name__ == '__main__':
a=App()

Get_Attr

import json
import requests
from urllib.parse import urlencode
class Get_Infos():
def __init__(self):
self.url='http://apis.juhe.cn/mobile/get?'
self.headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
def get_infos(self,phone_num):
params={
'phone':phone_num,
'key':'7a2b367a62fa24108b1f27ed4c84c97a',
'dtype':''
}
r=requests.get(self.url+urlencode(params),headers=self.headers)
_json=json.loads(r.text)
if _json.get('resultcode')=='200':
result=_json.get('result')
item={}
item['province']=result.get('province')
item['city']=result.get('city')
item['areacode']=result.get('areacode')
item['zip']=result.get('zip')
item['company']=result.get('company')
return item
else:
return False

到此這篇關(guān)于Python實(shí)現(xiàn)號(hào)碼歸屬地查詢(xún)功能的文章就介紹到這了,更多相關(guān)Python號(hào)碼歸屬地查詢(xún)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python入門(mén)游戲之井字棋實(shí)例代碼

    python入門(mén)游戲之井字棋實(shí)例代碼

    python井字棋游戲雖然看上去非常簡(jiǎn)陋,但是卻非常值得學(xué)習(xí),下面這篇文章主要給大家介紹了關(guān)于python入門(mén)游戲之井字棋的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • Python常見(jiàn)庫(kù)matplotlib學(xué)習(xí)筆記之畫(huà)圖中各個(gè)模塊的含義及修改方法

    Python常見(jiàn)庫(kù)matplotlib學(xué)習(xí)筆記之畫(huà)圖中各個(gè)模塊的含義及修改方法

    matplotlib是python最著名的繪圖庫(kù),它提供了一整套和matlab相似的命令A(yù)PI,十分適合交互式地進(jìn)行制圖,下面這篇文章主要給大家介紹了關(guān)于Python常見(jiàn)庫(kù)matplotlib學(xué)習(xí)筆記之畫(huà)圖中各個(gè)模塊的含義及修改方法的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • python3模擬實(shí)現(xiàn)xshell遠(yuǎn)程執(zhí)行l(wèi)inux命令的方法

    python3模擬實(shí)現(xiàn)xshell遠(yuǎn)程執(zhí)行l(wèi)inux命令的方法

    今天小編就為大家分享一篇python3模擬實(shí)現(xiàn)xshell遠(yuǎn)程執(zhí)行l(wèi)inux命令的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • pytorch對(duì)可變長(zhǎng)度序列的處理方法詳解

    pytorch對(duì)可變長(zhǎng)度序列的處理方法詳解

    今天小編就為大家分享一篇pytorch對(duì)可變長(zhǎng)度序列的處理方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 解決Mac下使用python的坑

    解決Mac下使用python的坑

    今天小編就為大家分享一篇解決Mac下使用python的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • python安裝requests庫(kù)的實(shí)例代碼

    python安裝requests庫(kù)的實(shí)例代碼

    在本篇文章中小編給大家分享了關(guān)于python怎么安裝requests庫(kù)的知識(shí)點(diǎn)以及代碼內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2019-06-06
  • Python函數(shù)裝飾器常見(jiàn)使用方法實(shí)例詳解

    Python函數(shù)裝飾器常見(jiàn)使用方法實(shí)例詳解

    這篇文章主要介紹了Python函數(shù)裝飾器常見(jiàn)使用方法,結(jié)合實(shí)例形式分析了Python函數(shù)裝飾器的概念、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-03-03
  • 淺談Python數(shù)學(xué)建模之整數(shù)規(guī)劃

    淺談Python數(shù)學(xué)建模之整數(shù)規(guī)劃

    整數(shù)規(guī)劃并不一定是線(xiàn)性規(guī)劃問(wèn)題的變量取整限制,對(duì)于二次規(guī)劃、非線(xiàn)性規(guī)劃問(wèn)題也有變量取整限制而引出的整數(shù)規(guī)劃。但在數(shù)學(xué)建模問(wèn)題中所說(shuō)的整數(shù)規(guī)劃,通常是指整數(shù)線(xiàn)性規(guī)劃。整數(shù)規(guī)劃與線(xiàn)性規(guī)劃的差別只是變量的整數(shù)約束。選擇簡(jiǎn)單通用的編程方案,讓求解器去處理吧
    2021-06-06
  • 解決Python字典查找報(bào)Keyerror的問(wèn)題

    解決Python字典查找報(bào)Keyerror的問(wèn)題

    這篇文章主要介紹了解決Python字典查找報(bào)Keyerror的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 基于Django與ajax之間的json傳輸方法

    基于Django與ajax之間的json傳輸方法

    今天小編就為大家分享一篇基于Django與ajax之間的json傳輸方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05

最新評(píng)論

离岛区| 扶绥县| 岑巩县| 卢氏县| 皮山县| 宜黄县| 安阳县| 齐齐哈尔市| 鄄城县| 丹棱县| 临夏市| 西充县| 贵定县| 金阳县| 毕节市| 宜兴市| 淄博市| 禹城市| 浦北县| 阜宁县| 清丰县| 舞阳县| 土默特左旗| 蓬溪县| 兰溪市| 菏泽市| 乌什县| 金华市| 波密县| 监利县| 白沙| 称多县| 萍乡市| 车致| 余干县| 奇台县| 汾阳市| 南投县| 吉安县| 来凤县| 邹平县|