本文记录了用新浪微博官方Python SDK调用API进行开发的流程。
准备工作
申请成为开发者并创建一个应用:
首先要有一个新浪微博的账号,然后去新浪微博开放平台(
P.S.,应用需要设置一个回调地址(CALL_BACK),可以设定为默认的回调网址:
这一步完成后,将得到三个有用的信息:APP_KEY,APP_SECRET和CALL_BACK,这三个信息在后面编写程序时将用到。
OAuth2.0授权
微博开放接口的调用,如发微博、关注等,都是需要获取用户身份认证的。目前微博开放平台用户身份鉴权主要采用的是OAuth2.0。
下载和安装新浪微博Python SDK
网页中说明了安装有两种方式,第一种用命令行工具pip安装,第二种下载源码包安装。
对于第一种安装方式,pip是Python的包管理工具,可以很方便的安装Python模块。安装成功后,只需在命令行(或linux终端)中执行pip install sinaweibopy,SDK的包sinaweibopy就安装完毕。测试是否安装成功,可以在python命令行中输入:import weibo,如果没有错误提示说明安装成功。实际上Python SDK主要就是模块weibo,后面在使用SDK时就是调用该模块中的函数。
对于第二种方式,需要拷贝下载的源码到安装目录或者配置Python模块搜索的Path中。
读写微博接口程序
下面就可以调用微博API写微博操作程序了,下面简单介绍一个抓取微博数据的程序。
#_*_ coding: utf-8 _*_
importsys
reload(sys)
sys.setdefaultencoding('utf-8')from weibo importAPIClientimportjsonimportwebbrowserimportio
APP_KEY= '' ## 填写应用程序的信息
APP_SECRET = ''CALLBACK_URL= 'https://api.weibo.com/oauth2/default.html'client= APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
url=client.get_authorize_url()#TODO: redirect to url
webbrowser.open_new(url)#print url#obtain url code:
code = raw_input("input the code:").strip()
client= APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
r=client.request_access_token(code)
access_token= r.access_token #新浪返回的token,类似abc123xyz456
expires_in = r.expires_in #token过期的UNIX时间:http://zh.wikipedia.org/wiki/UNIX%E6%97%B6%E9%97%B4#TODO: 在此可保存access token
client.set_access_token(access_token, expires_in)
res= client.statuses.public_timeline.get(count=200) ##返回最新的200条热门微博#res = client.statuses.user_timeline.get() ##返回作者发布的历史微博#res = client.statuses.friends_timeline.ids.get() ##返回好友发布的微博id#res=client.emotions.get()
a= json.dumps(res, ensure_ascii = False,indent = 2)
fout= io.open('test','w',encoding='utf-8')
fout.write(a)
运行程序,自动打开回调页,将网址内的“code”拷贝至程序,程序执行成功后,就可以得到微博数据了。
这里实际是调用新浪微博提供的API,具体参考官方文档。