申请成为开发者并创建一个应用:
首先要有一个新浪微博的账号,然后去新浪微博开放平台(http://open.weibo.com/)创建一个应用,具体的步骤官网文档介绍的非常详细:在开发者页面点击“登录” -> “创建应用” -> 选择应用类型(如“网页应用”)-> 填写应用信息。
P.S.,应用需要设置一个回调地址(CALL_BACK),可以设定为默认的回调网址:https://api.weibo.com/oauth2/default.html。
这一步完成后,将得到三个有用的信息:APP_KEY,APP_SECRET和CALL_BACK,这三个信息在后面编写程序时将用到。
微博开放接口的调用,如发微博、关注等,都是需要获取用户身份认证的。目前微博开放平台用户身份鉴权主要采用的是OAuth2.0。官方文档有非常详细的说明,了解了授权机制后有助于使用SDK编写程序的过程。
打包下载新浪微博官方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 _*_ import sys reload(sys) sys.setdefaultencoding(‘utf-8‘) from weibo import APIClient import json import webbrowser import io 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,具体参考官方文档。
原文:http://www.cnblogs.com/tec-vegetables/p/4506943.html