首先,你要有一个新浪微博账号。
  申请页面: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 = '';
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; #用户ID
userid = 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编写简单新浪微博应用(一)的更多相关文章

  1. 使用Python编写简单的端口扫描器的实例分享【转】

    转自 使用Python编写简单的端口扫描器的实例分享_python_脚本之家 http://www.jb51.net/article/76630.htm -*- coding:utf8 -*- #!/ ...

  2. Python 利用Python编写简单网络爬虫实例3

    利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://bbs.51testing. ...

  3. Python 利用Python编写简单网络爬虫实例2

    利用Python编写简单网络爬虫实例2 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://www.51testing. ...

  4. python编写简单的html登陆页面(4)

    python编写简单的html登陆页面(4)   1  在python编写简单的html登陆页面(2)的基础上在延伸一下: 可以将动态态分配数据,建立表格,存放学生信息 2 实现的效果如下: 3  动 ...

  5. python编写简单的html登陆页面(3)

    1  在python编写简单的html登陆页面(2)的基础上在延伸一下: 可以将静态分配数据,建立表格,存放学生信息 2  加载到静态数据 3  html的编写直接在表格里添加一组数据就行了 4  V ...

  6. python编写简单的html登陆页面(2)

    1  在python编写简单的html登陆页面(1)的基础上在延伸一下: 可以将动态分配数据,实现页面跳转功能: 2  跳转到新的页面:return render_template('home1.ht ...

  7. 用Python编写简单的发红包程序和计算器原理

    用Python编写简单的发红包程序: 第一种解法:数轴方法解决 import random def red_packet(money,num): money = money * 100 #将钱数转换成 ...

  8. Windows下用python编写简单GUI程序的方法

    Python实现GUI简单的来说可以调用Tkinter库,这样一般的需求都可以实现,显示简单的windows窗口代码如下: python_gui.py #!C:\Python27\python.exe ...

  9. python 编写简单的setup.py

    学习python也已经有一段时间了,发现python作为脚本语言一个很重要的特点就是简单易用,而且拥有巨多的第三方库,几乎方方面面的库都有,无论你处于哪个行业,想做什么工作,几乎都能找到对应的第三方库 ...

随机推荐

  1. 升级sp1后文档无法编辑

    现象: A problem occurred while connecting to the server. If the problem continues, contact your admini ...

  2. Fix Internet Explorer Crashes with SharePoint 2013 Online Presence Indicators

    IE中,只要是鼠标浮动到人名字上面的状态的时候,这个状态是与Lync相连接的,IE就会出现停止工作. 以下是解决方法. Until the other day when I figured this ...

  3. Android 计算布局背景的透明度

    1.#ff000000 此为16进制颜色代码,前2位ff为透明度,后6位为颜色值(000000为黑色,ffffff为白色,可以用ps等软件获取). 2.透明度分为256阶(0-255),计算机上用16 ...

  4. 迭代器 iterator(二): 用iterator遍历arraylist

           迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址.迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些 ...

  5. iOS 自动布局详细介绍

    1. 自动布局的理解 iOS自动布局很有用,可以在不同size的屏幕上运行,原先看的头痛,还是习惯用最蠢的[UIScreen mainScreen].bounds.size.width等来布局,后来实 ...

  6. Oracle行列转换

    一.建表与插入数据 1.1.建表 create table kecheng ( id NUMBER, name ), course ), score NUMBER ); insert into kec ...

  7. [android] 手机卫士设置向导页面

    设置向导页面,通过SharedPreferences来判断是否已经设置过了,跳转到不同的页面 自定义样式 在res/values/styles.xml中 添加节点<style name=””&g ...

  8. 我为什么用 SQLite 和 FMDB 而不用 Core Data

    凭良心讲,我不能告诉你不去使用Core Data.它不错,而且也在变好,并且它被很多其他Cocoa开发者所理解,当有新人加入你的组或者需要别人接手你的项目的时候,这点很重要.更重要的是,不值得花时间和 ...

  9. App Icon生成工具(转载)

    原地址:http://www.cocoachina.com/bbs/read.php?tid=290247 下载软件:在AppStore搜索App Icon Gear 打开软件 决定制作启动图或图标, ...

  10. Swift 中的函数(下)

    学习来自<极客学院:Swift中的函数> 工具:Xcode6.4 直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会 import Foundation /******** ...