12行代码获取1000万行手机号码归属地
生活随笔
收集整理的這篇文章主要介紹了
12行代码获取1000万行手机号码归属地
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
作為網優工程師,你是否也曾奢望手里有一份全國手機號碼歸屬地對應表?學習Python后,我的這一夢想可以實現了。
今天偶然看到了一個直接獲取手機號碼歸屬地的模塊phone,今天咱們就來實戰一下。
號碼基本框架如下:
可以看到,核心代碼只有一行,作者也太牛逼了,膜拜。
我們來仔細看看,輸入信息是手機號碼前7位的字符串格式,輸出信息包含:手機號段、歸屬省份、歸屬城市、郵政編碼,區號,運營商歸屬。格式為一個字典。
獲取一個手機號段歸屬地的代碼有了,接下來我們來看看如何獲取多個號段的歸屬地呢?
我想到了range
使用range我們可以批量獲取信息了,仔細觀察結果,這個字典的key都是重復的,而且,字典也不方便用于后續處理,嘗試將dict轉換為list
In [3]: info.values() Out[3]: dict_values(['1581338', '廣東', '廣州', '510000', '020', '移動'])我們還想將查詢結果存儲到文件,我自然想到了pandas,將list轉換為DataFrame,然后寫入csv就可以了
In [4] : import phone...: import pandas as pd...:...:...: phone_list=[]...:...: for i in range(1581330,1581339):...: info = phone.Phone().find(str(i))...: phone_list.append(info.values())...:...: # 創建DataFranme,并設置列名...: df=pd.DataFrame(phone_list, columns = ['手機號段', '省份', '地市', '郵編', '區號', '運營商'])...: df Out[4]:手機號段 省份 地市 郵編 區號 運營商 0 1581330 廣東 廣州 510000 020 移動 1 1581331 廣東 廣州 510000 020 移動 2 1581332 廣東 廣州 510000 020 移動 3 1581333 廣東 廣州 510000 020 移動 4 1581334 廣東 廣州 510000 020 移動 5 1581335 廣東 廣州 510000 020 移動 6 1581336 廣東 廣州 510000 020 移動 7 1581337 廣東 廣州 510000 020 移動 8 1581338 廣東 廣州 510000 020 移動好像我們馬上就成功了呀,我們再試試別的號段
In [5] : import phone...: import pandas as pd...:...:...: phone_list=[]...:...: for i in range(1300000,1300010):...: info = phone.Phone().find(str(i))...: phone_list.append(info.values())...:...: # 創建DataFranme,并設置列名...: df=pd.DataFrame(phone_list, columns = ['手機號段', '省份', '地市', '郵編', '區號', '運營商'])...: df --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-16-a3119c124be5> in <module>7 for i in range(1300000,1300010):8 info = phone.Phone().find(str(i)) ----> 9 phone_list.append(info.values())1011 # 創建DataFranme,并設置列名AttributeError: 'NoneType' object has no attribute 'values'。。。報錯了
什么原因呢?這是因為1300000號段不存在,怎么辦呢,程序容錯性太差了,不夠健壯,我們要嘗試加入容錯機制
寫入csv,文件中含有中文,注意將文件編碼設置為gbk
In [29]: # 文件包含中文,將文件編碼設置為gbk...: df.to_csv('phone_list.csv', encoding='gbk')打開生成的文件,看到如下信息,這就是我夢寐以求的那張表
完整代碼
想了解更多,掃碼關注。
總結
以上是生活随笔為你收集整理的12行代码获取1000万行手机号码归属地的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常用的linux连接工具
- 下一篇: WPF详解