基於Python腳本和聚合數據實現手機號碼歸屬地資訊查詢

聚合數據簡介

聚合數據是一個為智慧手機開發者,網站站長,移動設備開發人員及圖商提供原始數據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

介面停用