您的位置:首页 > 编程语言 > Python开发

基于Python脚本和聚合数据实现手机号码归属地信息查询

2016-10-30 13:39 971 查看

聚合数据简介

聚合数据是一个为智能手机开发者,网站站长,移动设备开发人员及图商提供原始数据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()<
4000
/code>


由于聚合数据网站只给出了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无请求权限
10003KEY过期
10004错误的OPENID
10005应用未审核超时,请提交认证
10006未知的请求源
10007未知的请求源
10008被禁止的IP
10009被禁止的KEY
10011当前IP请求超过限制
10012请求超过次数限制
10013测试KEY超过请求限制
10014系统内部异常
10020接口维护
10021接口停用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息