聚合数据是一个为智能手机开发者,网站站长,移动设备开发人员及图商提供原始数据API服务的综合性云数据平台。包含手机聚合,网站聚合,LBS聚合三部分,其功能类似于Google APIS和百度的APIStore。 在学习Python爬虫的过程中,可以尝试使用免费的API来获取一些信息,可以作为一种学习。
在完成数据使用申请后,需要等待一定的时间,聚合数据后台才会风分发AppKey,只需这个AppKey,就可以对聚合数据进行访问和调用。 小编这里申请的是免费API—–手机号归属地查询。
AppKey = "0ea8e44e4612fb794c29f4979de48ef7"
基于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()
在主函数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()
服务级错误码参照码(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 | 接口停用 |