如何快速找到全世界所有國家的電話區(qū)號?
有這樣的一個需求,收到國外手機(jī)號發(fā)來的信息,我想知道這是哪個國家的手機(jī)號,這個國家的區(qū)號是多少?怎么批量操作?
"phone":"+79000381454"
如何快速解決這個問題呢?
有那么幾種方法,直接去網(wǎng)上搜,看看有沒有現(xiàn)成的庫可以用。手里如果有幾十幾百個手機(jī)號要確認(rèn), 那種在線的服務(wù)臨時逐個手動查肯定不現(xiàn)實(shí)。不過你倒是可以做這樣的一個在線服務(wù),肯定有需求。
第二個我能想到的是,直接爬,畢竟我是搞python的。很多主流網(wǎng)站都提供有手機(jī)號注冊功能, 他們一般都支持國外手機(jī)號注冊。
第一個能想到的就是知乎

它的注冊頁面有所有國家的區(qū)號
怎么爬最高效呢?
這有方法講究,不需要去下載他的整個頁面。因?yàn)槲抑皇切枰@一部分的數(shù)據(jù)而已。就不要再去發(fā)個請求把整個頁面下載下來解析了。
直接開干
打開他的頁面審查元素,直接拷貝父元素 我們用神器 先找到所有buttons元素,因?yàn)閲颐蛥^(qū)號都是放在button里面。 第二步直接提取里面的文本,并進(jìn)行解析清洗 因?yàn)槊恳恍卸际墙y(tǒng)一規(guī)律的結(jié)構(gòu)化數(shù)據(jù),國家和區(qū)號之間有空格,所有直接通過空格將字符串進(jìn)行分割成兩部分。?區(qū)號前面都有一個“+”,我直接用切片從1個字符開始切,得到真正的區(qū)號。 最后輸出 完事 完整代碼: 為了方便大家索取,我把他轉(zhuǎn)換成json 代碼5分鐘擼完,所以學(xué)點(diǎn)python還是非常有用的。但是寫這篇文章加排版花了約1小時,可見寫文章真是個累活。 另外,我的日更計(jì)劃失敗了,不是因?yàn)閼校橇碛兴?jì)劃,后面也不會想著日更這個事了,想寫了就寫,沒想好寫就不寫。 全文完! 愿每天都平安 任何疑問,歡迎留言或添微信上給我消息 關(guān)注Python之禪,每天學(xué)點(diǎn)Python
BeautifulSoup 去解析這個html文檔字符串html?=?"""?
from?bs4?import?BeautifulSoup
????soup?=?BeautifulSoup(html)
????buttons?=?soup.findAll("button")
????for?button?in?buttons:
????????print(button)
text?=?button.text
country_name,?area_code?=?text.split("?")
print(country_name,?area_code[1:]?)中國香港?852
中國?86
美國?1
日本?81
中國澳門?853
中國臺灣?886
馬來西亞?60
澳大利亞?61
加拿大?1
英國?44
新加坡?65
德國?49
俄羅斯?7
埃及?20
南非?27
希臘?30
....def?extract_area_code():
????????"""
????????提取國家區(qū)號
????????"""
????????html?=?"""
??????? div class="Select-list" role="listbox">????????"""
????????from?bs4?import?BeautifulSoup
????????soup?=?BeautifulSoup(html)
????????buttons?=?soup.findAll("button")
????????area_codes?=?dict()
????????for?button?in?buttons:
????????????text?=?button.text
????????????country_name,?area_code?=?text.split("?")
????????????area_codes[country_name]?=?area_code[1:]
????????import?pprint
????????pprint.pprint(area_codes)
????????return?area_codes{'中國':?'86',
?'中國臺灣':?'886',
?'中國澳門':?'853',
?'中國香港':?'852',
?'中非共和國':?'236',
?'丹麥':?'45',
?'烏克蘭':?'380',
?'烏茲別克斯坦':?'998',
?'烏干達(dá)':?'256',
?'烏拉圭':?'598',
?'乍得':?'235',
?'也門':?'967',
?'亞美尼亞':?'374',
?'以色列':?'972',
?'伊拉克':?'964',
?'伊朗':?'98',
?'伯利茲':?'501',
?'俄羅斯':?'7',
?'保加利亞':?'359',
?'關(guān)島':?'1671',
?'岡比亞':?'220',
?'冰島':?'354',
?'幾內(nèi)亞':?'224',
?'列支敦士登':?'423',
?'剛果民主共和國':?'243',
?'利比亞':?'218',
?'利比里亞':?'231',
?'加拿大':?'1',
?'加納':?'233',
?'加蓬':?'241',
?'匈牙利':?'36',
?'南非':?'27',
?'博茨瓦納':?'267',
?'卡塔爾':?'974',
?'盧森堡':?'352',
?'印度':?'91',
?'印度尼西亞':?'62',
?'厄瓜多爾':?'593',
?'敘利亞':?'963',
?'古巴':?'53',
?'吉爾吉斯斯坦':?'996',
?'吉布提':?'253',
?'哈薩克斯坦':?'7',
?'哥倫比亞':?'57',
?'哥斯達(dá)黎加':?'506',
?'喀麥隆':?'237',
?'土庫曼斯坦':?'993',
?'土耳其':?'90',
?'圣多美和普林西比':?'239',
?'圣露西亞':?'1758',
?'圣馬力諾':?'378',
?'圭亞那':?'592',
?'坦桑尼亞':?'255',
?'埃及':?'20',
?'埃塞俄比亞':?'251',
?'塔吉克斯坦':?'992',
?'塞內(nèi)加爾':?'221',
?'塞爾維亞共和國':?'381',
?'塞拉利昂':?'232',
?'塞浦路斯':?'357',
?'塞舌爾':?'248',
?'墨西哥':?'52',
?'多哥':?'228',
?'多明尼加共和國':?'1809',
?'奧地利':?'43',
?'委內(nèi)瑞拉':?'58',
?'孟加拉國':?'880',
?'安哥拉':?'244',
?'安圭拉島':?'1264',
?'安提瓜和巴布達(dá)':?'1268',
?'安道爾共和國':?'376',
?'尼加拉瓜':?'505',
?'尼日利亞':?'234',
?'尼日爾':?'227',
?'尼泊爾':?'977',
?'巴哈馬':?'1242',
?'巴基斯坦':?'92',
?'巴巴多斯':?'1246',
?'巴布亞新幾內(nèi)亞':?'675',
?'巴拉圭':?'595',
?'巴拿馬':?'507',
?'巴林':?'973',
?'巴西':?'55',
?'布基納法索':?'226',
?'布隆迪':?'257',
?'希臘':?'30',
?'庫克群島':?'682',
?'開曼群島':?'1345',
?'德國':?'49',
?'意大利':?'39',
?'所羅門群島':?'677',
?'拉脫維亞':?'371',
?'挪威':?'47',
?'捷克':?'420',
?'摩爾多瓦':?'373',
?'摩洛哥':?'212',
?'摩納哥':?'377',
?'文萊':?'673',
?'斐濟(jì)':?'679',
?'斯威士蘭':?'268',
?'斯洛伐克':?'421',
?'斯洛文尼亞':?'386',
?'斯里蘭卡':?'94',
?'新加坡':?'65',
?'新西蘭':?'64',
?'日本':?'81',
?'智利':?'56',
?'柬埔寨':?'855',
?'格林納達(dá)':?'1473',
?'格魯吉亞':?'995',
?'比利時':?'32',
?'毛里塔尼亞':?'222',
?'毛里求斯':?'230',
?'湯加':?'676',
?'沙特阿拉伯':?'966',
?'法國':?'33',
?'法屬圭亞那':?'594',
?'法屬波利尼西亞':?'689',
?'波蘭':?'48',
?'波多黎各':?'1787',
?'泰國':?'66',
?'津巴布韋':?'263',
?'洪都拉斯':?'504',
?'海地':?'509',
?'澳大利亞':?'61',
?'愛爾蘭':?'353',
?'愛沙尼亞':?'372',
?'牙買加':?'1876',
?'特立尼達(dá)和多巴哥':?'1868',
?'玻利維亞':?'591',
?'瑞典':?'46',
?'瑞士':?'41',
?'瓜地馬拉':?'502',
?'白俄羅斯':?'375',
?'百慕大群島':?'1441',
?'直布羅陀':?'350',
?'科威特':?'965',
?'科特迪瓦':?'225',
?'秘魯':?'51',
?'突尼斯':?'216',
?'立陶宛':?'370',
?'索馬里':?'252',
?'約旦':?'962',
?'納米比亞':?'264',
?'緬甸':?'95',
?'羅馬尼亞':?'40',
?'美國':?'1',
?'老撾':?'856',
?'肯尼亞':?'254',
?'芬蘭':?'358',
?'蘇丹':?'249',
?'蘇里南':?'597',
?'英國':?'44',
?'荷蘭':?'31',
?'莫桑比克':?'258',
?'萊索托':?'266',
?'菲律賓':?'63',
?'薩爾瓦多':?'503',
?'葡萄牙':?'351',
?'蒙古':?'976',
?'蒙特塞拉特島':?'1664',
?'西班牙':?'34',
?'貝寧':?'229',
?'贊比亞':?'260',
?'越南':?'84',
?'阿塞拜疆':?'994',
?'阿富汗':?'93',
?'阿爾及利亞':?'213',
?'阿爾巴尼亞':?'355',
?'阿拉伯聯(lián)合酋長國':?'971',
?'阿曼':?'968',
?'阿根廷':?'54',
?'阿森松島':?'247',
?'韓國':?'82',
?'馬爾代夫':?'960',
?'馬拉維':?'265',
?'馬提尼克':?'596',
?'馬來西亞':?'60',
?'馬耳他':?'356',
?'馬達(dá)加斯加':?'261',
?'馬里':?'223',
?'黎巴嫩':?'961'}
最近更新:
