应用python编写简单新浪微博应用(一)
来源:互联网 发布:组态软件的组成 编辑:程序博客网 时间:2024/05/29 14:10
应用python编写简单新浪微博应用(一)
=============转载请注明出处=============
首先,你要有一个新浪微博账号。
申请页面:http://weibo.com
其次,你要在新浪微博的开发平台中创建一个应用,获取自己专属的App Key和App Secret。
申请页面:http://open.weibo.com/development
再次,你要下载一个sinatpy开发包,这个开发包里没有setup.py,手工解压后将weibopy目录拷贝至python的库目录下即可。
下载页面:http://code.google.com/p/sinatpy/downloads/list
特别注意:据个人测试,该开发包最低支持python2.4,但需要同时拷贝simplejson目录至python的库目录下。
至此,一切条件均已齐备。虽然我下面会给出具体的代码范例说明如何调用开发包中的相应函数完成基本的应用授权、获取用户信息、发布微博消息、获取微博消息列表、获取指定微博消息等操作,但还是希望开发者能先行详细阅读新浪微博开发平台中提供的所有文档,特别是授权机制说明,我在文中不会再赘述相关背景资料。
文档页面:http://open.weibo.com/wiki
一、应用验证相关代码
以下的代码属于基础代码,之后各个步骤的代码均需承接以下代码。
from weibopy.auth import OAuthHandler;from weibopy.api import API;#此应用的开发者密钥(此处应替换为创建应用时获取到的开发密钥)APP_KEY = '1234567890';APP_SECRET = 'abcdefghijklmnopqrstuvwxyz123456';#设定网页应用回调页面(桌面应用设定此变量为空)BACK_URL = "http://beauty.hit.edu.cn/backurl";#验证开发者密钥.auth = OAuthHandler( APP_KEY, APP_SECRET, BACK_URL );
二、应用授权相关代码
#获取授权页面网址.auth_url = auth.get_authorization_url();#取出请求令牌密钥(桌面应用跳过此处)rtKey = auth.request_token.key;rtSecret = auth.request_token.secret;
进行到这一步针对桌面应用和网页应用有两个不同的分支:
1、桌面应用将授权页面网址提供给用户,用户访问授权页面,输入用户名和密码并通过验证之后,获取到一个授权码,回到桌面应用中提交该授权码。
2、网页应用直接将用户引导至授权页面,引导前应将rtKey和rtSecret缓存到Session中。当用户在授权页面输入用户名和密码并通过验证之后,授权页面会调用网页应用的回调页面,同时传递参数oauth_token和oauth_verifier,其中oauth_token应和rtKey相同(回调页面中需确认此处),而oauth_verifier即为授权码,下文中简称为verifier。
有了授权码verifier之后,加上之前缓存在Session中的rtKey和rtSecret便可获取用户令牌密钥。
#设定请求令牌密钥(桌面应用跳过此句)auth.set_request_token( rtKey, rtSecret );#获取用户令牌密钥.access_token = auth.get_access_token( verifier );atKey = access_token.key;atSecret = access_token.secret;
终于,我们获取到了用户令牌密钥atKey和atSecret,接下来的所有步骤都需要用这两个参数来验证用户的身份。
三、获取用户信息
from weibopy.error import WeibopError;#设定用户令牌密钥.auth.setToken( atKey, atSecret );#绑定用户验证信息.api = API(auth);#获取用户信息.try: user = api.verify_credentials();except WeibopError, e: return e.reason; #用户IDuserid = user.id;#用户昵称.username = user.screen_name.encode('utf-8');
四、发布微博消息
from weibopy.error import WeibopError;#设定用户令牌密钥.auth.setToken( atKey, atSecret );#绑定用户验证信息.api = API(auth);#如果不传送图片.if ( ImagePath == None ): #发布普通微博. try: #message为微博消息,lat为纬度,long为经度. api.update_status( message, lat, long ); except WeibopError, e: return e.reason;#如果传送图片.else: #发布图文微博. try: #ImagePath为图片在操作系统中的访问地址,其余同上. api.upload( ImagePath, message, lat, long ); except WeibopError, e: return e.reason;
五、获取微博消息列表
#设定用户令牌密钥.auth.setToken( atKey, atSecret );#绑定用户验证信息.api = API(auth);WeiboList = [];#获取微博列表.#count为每页消息数量,page为从1开始计数的页码.try: timeline = api.user_timeline( count = count, page = page );except: return None;#对微博列表中的微博信息进行逐个枚举.for status in timeline: weibo = {}; #微博id weibo["id"] = status.id; #微博创建时间. weibo["created"] = status.created_at; #微博发布用户. weibo["user"] = status.user.name.encode('utf-8'); #微博文字. weibo["text"] = status.text.encode('utf-8'); #微博来源. weibo["source"] = status.source.encode('utf-8'); #地理信息. coordinates = getattr( status.geo, "coordinates", None ); if ( coordinates ): #地理信息纬度. weibo["lat"] = coordinates[0]; #地理信息经度. weibo["long"] = coordinates[1]; else: weibo["lat"] = None; weibo["long"] = None; #引用微博. refer = getattr( status, "retweeted_status", None ); if ( refer ): #引用微博发布用户. weibo["ruser"] = refer.user.name.encode('utf-8'); #引用微博文字. weibo["rtext"] = refer.text.encode('utf-8'); else: weibo["ruser"] = None; weibo["rtext"] = None; #附图原图. weibo["orgpic"] = getattr( status, "original_pic", None ); #附图中型图. weibo["midpic"] = getattr( status, "bmiddle_pic", None ); #附图缩略图. weibo["thumb"] = getattr( status, "thumbnail_pic", None ); WeiboList.append( weibo );return WeiboList;
六、获取单条微博消息
此处sinatpy开发包中的相关代码存在问题,调用绑定json函数时显示404错误,出于种种考虑没有直接修改api,而是在调用代码中进行了重新绑定处理。
from weibopy.binder import bind_api;#设定用户令牌密钥.auth.setToken( atKey, atSecret );#绑定用户验证信息.api = API(auth);path = '/statuses/show/' + str(id) + '.json';try: #重新绑定get_status函数 get_status = bind_api( path = path, payload_type = 'status' );except: return "**绑定错误**";#获取微博消息.status = get_status( api );#以下参考获取微博消息列表中相关代码
至此,简单的微博相关操作均已示范完毕。出于安全起见,此处未介绍删除微博的代码。还有其他的评论相关操作、关注相关操作等请参见《应用python编写简单新浪微博应用(二)》。
引自:http://beauty.hit.edu.cn/myStudy/Product/doc.2011-09-05.3305539365
- 应用python编写简单新浪微博应用(一)
- 应用python编写简单新浪微博应用(一)
- 应用python编写简单新浪微博应用(二)
- python的简单实际应用(一)
- 使用python进行新浪微博应用开发
- 新浪微博应用地址
- BigPipe 应用:新浪微博
- Python:新浪微博应用开发简介(认证及授权部分)
- python实战--web.py实战(开发新浪微博应用)
- python实战--web.py实战(开发新浪微博应用)
- 新浪微博开放平台站内应用开发流程直播(一)
- python编写的新浪微博爬虫
- ListView组件的应用(模拟新浪微博界面)
- 新浪微博站内应用开发(网站类)
- 使用python编写您的微博应用
- 新浪微博应用的demo入门
- 新浪微博API开发WEB应用
- 我的新浪微博应用
- net-snmp windows安装(mib2c)
- 嵌入式Linux之我行——S3C2440上LCD驱动(FrameBuffer)实例开发讲解(一)
- ADO.net执行存取过程时间过长的一个解决方式
- VS "安装和部署项目"生成的快捷方式问题
- 聚簇索引与非聚簇索引的区别以及SQL Server查询优化技术
- 应用python编写简单新浪微博应用(一)
- WindowsPhone开发系列(官方教程已有中文字幕)
- DBgrid 第一列加入CheckBox,点击列头 全选/全消
- 应用python编写简单新浪微博应用(二)
- jquery/js 实现 标签 条码 一维码 Web页面 区域打印解决方案 实例
- 各种编程书籍
- Javascript代码规范
- windows程序设计——CreateProcess()
- 程序员面试题精选-翻转句子中单词的顺序[算法]