基于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()的改变而已,不清楚的同学可以谷歌一下,了解一下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 |
接口停用 |