基於Python腳本和聚合數據實現手機號碼歸屬地資訊查詢
- 2020 年 4 月 3 日
- 筆記
聚合數據簡介
聚合數據是一個為智慧手機開發者,網站站長,移動設備開發人員及圖商提供原始數據API服務的綜合性雲數據平台。包含手機聚合,網站聚合,LBS聚合三部分,其功能類似於Google APIS和百度的APIStore。 在學習Python爬蟲的過程中,可以嘗試使用免費的API來獲取一些資訊,可以作為一種學習。
(一)如何獲取聚合數據?
- 在聚合數據官網註冊帳號
- 申請實名認證
- 申請使用數據
(二)如何使用聚合數據?
(1)查詢AppKey值
在完成數據使用申請後,需要等待一定的時間,聚合數據後台才會風分發AppKey,只需這個AppKey,就可以對聚合數據進行訪問和調用。 小編這裡申請的是免費API—–手機號歸屬地查詢。
AppKey = "0ea8e44e4612fb794c29f4979de48ef7"
(2)查詢示例程式碼
基於Python的手機號碼歸屬地介面調用程式碼實例。 示例地址:http://code.juhe.cn/docs/1018
基於Python2.x的調用程式碼如下:
#!/usr/bin/python # -*- coding: utf-8 -*- import json, urllib from urllib import urlencode #---------------------------------- # 手機號碼歸屬地調用示例程式碼 - 聚合數據 # 在線介面文檔:http://www.juhe.cn/docs/11 #---------------------------------- def main(): #配置您申請的APPKey appkey = "*********************" #1.手機歸屬地查詢 request1(appkey,"GET") #手機歸屬地查詢 def request1(appkey, m="GET"): url = "http://apis.juhe.cn/mobile/get" params = { "phone" : "", #需要查詢的手機號碼或手機號碼前7位 "key" : appkey, #應用APPKEY(應用詳細頁查詢) "dtype" : "" #返回數據的格式,xml或json,默認json } params = urlencode(params) if m =="GET": f = urllib.urlopen("%s?%s" % (url, params)) else: f = urllib.urlopen(url, params) content = f.read() res = json.loads(content) if res: error_code = res["error_code"] if error_code == 0: #成功請求 print res["result"] else: print "%s:%s" % (res["error_code"],res["reason"]) else: print "request api error" if __name__ == '__main__': main()
由於聚合數據網站只給出了Python2.x的示例調用程式碼,這裡考慮到許多同學都在學習Python3.x(建議學習3.x版本),特貼出Python3.x的示例程式碼。其實也沒有多大變化,只是urllib模組和print()的改變而已,不清楚的同學可以Google一下,了解一下urllib和print在Python2.x和Python3.x中的區別就明白了。
基於Python3.x的調用程式碼如下:
#!/usr/bin/python # -*- coding: utf-8 -*- import json import urllib.request from urllib.parse import urlencode # ---------------------------------- # 手機號碼歸屬地調用示例程式碼 - 聚合數據 # 在線介面文檔:http://www.juhe.cn/docs/11 # ---------------------------------- def main(): # 配置您申請的APPKey appkey = "" # 1.手機歸屬地查詢 request1(appkey, "GET") # 手機歸屬地查詢 def request1(appkey, m="GET"): url = "http://apis.juhe.cn/mobile/get" params = { "phone": "", # 需要查詢的手機號碼或手機號碼前7位 "key": appkey, # 應用APPKEY(應用詳細頁查詢) "bytes": "" # 返回數據的格式,xml或json,默認json } params = urlencode(params) if m == "GET": f = urllib.request.urlopen("%s?%s" % (url, params)) else: f = urllib.request.urlopen(url, params) content = f.read().decode("utf-8") res = json.loads(content) if res: error_code = res["error_code"] if error_code == 0: # 成功請求 print(res["result"]) else: print("%s:%s" % (res["error_code"], res["reason"])) else: print("request api error") if __name__ == '__main__': main()
(3)正式調用
在主函數main()中配置已經申請好的AppKey
def main(): # 配置您申請的APPKey appkey = "0ea8e44e4612fb794c29f4979de48ef7" # 1.手機歸屬地查詢 request1(appkey, "GET")
配置 params(參數)
params = { "phone": "13855637789", # 需要查詢的手機號碼或手機號碼前7位(此號碼是我隨機輸入) "key": appkey, # 應用APPKEY(應用詳細頁查詢) "bytes": "json" # 返回數據的格式,xml或json,默認json }
直接運行主程式main()
if __name__ == '__main__': main()
(4) 錯誤碼參照
服務級錯誤碼參照碼(error_code):
錯誤碼 |
說明 |
---|---|
201101 |
手機號不能為空 |
201102 |
錯誤的手機號 |
201103 |
查詢無結果 |
系統級錯誤參照碼:
錯誤碼 |
說明 |
---|---|
10001 |
錯誤的請求KEY |
10002 |
該KEY無請求許可權 |
10003 |
KEY過期 |
10004 |
錯誤的OPENID |
10005 |
應用未審核超時,請提交認證 |
10006 |
未知的請求源 |
10007 |
未知的請求源 |
10008 |
被禁止的IP |
10009 |
被禁止的KEY |
10011 |
當前IP請求超過限制 |
10012 |
請求超過次數限制 |
10013 |
測試KEY超過請求限制 |
10014 |
系統內部異常 |
10020 |
介面維護 |
10021 |
介面停用 |