Python:新浪微博API初试

{想在微博上抓点数据进行分析,费了一天多的时间,才终于找到点头绪,整理一下。}

 目录:

一 注册创建应用获取认证和授权

二 新浪微博python sdk 下载和安装

三 简单Demo获取用户关注好友并统计性别比例

 

一 注册创建应用获取认证和授权

要想使用新浪的API获取数据,首先需要获得认证和授权(其实就是App Key 和 App Secret这两个的值),而这个貌似必须要创建应用才能获得,即使你并不想真的开发应用,只是想爬些数据而已。

1 申请成为开发者

1.1 打开新浪开放平台首页,点击【管理中心】

 

1.2  进入开发者信息页面,点击【现在就去完善】

 

1.3 按照流程填写基本信息、进行邮箱验证之后,就可以创建应用了,如果只是爬点数据的话并不需要完善所有信息提交审核

 

 

 

2  创建应用获取App Key和 App Secret

2.1 如果已经成功申请为开发者后,再打开新浪开放平台开发页 ,如下图所示,可以点击【创建应用】

 

 

2.2  这时会弹出一个页面让你选择创建应用的类型,参考别的博客的意见和自己的经验(我最初创建的是站内应用,但是发现没有填回调页的地方),建议选择【其他】

 

 

2.3  填写应用的基本信息,点击【创建】即可。因为只是用新浪的API抓些数据,因此信息都是随便写的。

 

2.4  创建应用后,所有的应用将会出现在【管理中心】-【我的应用】里,点击应用名,在应用信息的基本信息中,将会看到所需要的App Key 和App Secret:

 

2.5  编辑回调页(callback url),在应用信息的高级信息里编辑。似乎只要是能正常打开公开访问的页面(注意一定要可以正常打开公开访问)都可以,我参考的一篇博客回调页写的就是百度首页(http://www.baidu.com),但我用百度页调程序时却报错,最后将回调页改成新浪默认的就可以了,所以还是建议使用新浪提供的默认回调页https://api.weibo.com/oauth2/default.html

到了这一步应用生成就算完成了,有了App Key,App Secret 和 回调页 这三个值,就可以使用新浪API进行开发了

 

二 新浪微博python sdk 下载和安装

下载官方建议的SDK http://michaelliao.github.io/sinaweibopy/

下载完成后将里面的weibo.py复制到你的应用程序同一目录下,或者复制到 lib/site-package下。这样你的应用就可以调用sdk了。(此方法我未验证,我是直接安装的)

也可以直接在线安装,官网提供的方法是使用pip工具安装该工具包:pip install sinaweibopy

我的python中只有easy_install,查了一下资料说 pip 比 easy_install 更好一点,就顺手安装了pip:easy_install pip

然后我又用上面的pip命令安装SDK,但不知为什么一直报错,后来抱着试一试的心态直接用easy_install安装吧:easy_install sinaweibopy

意外的顺利成功!

虽然安装成功,还是又下载了一下SDK包,主要是为了看看都有哪些函数,及其用法。

 

三 简单的Demo 获取用户关注好友并统计性别比例

 

#-*- encoding:utf8 -*-

import webbrowser
import json
from weibo import APIClient

APP_KEY = 'XXXXXX' # your app key
APP_SECRET = 'XXXXXXXXXXXX' # your app secrect
CALLBACK_URL = 'https://api.weibo.com/oauth2/default.html' # your callback url

client = APIClient(APP_KEY,APP_SECRET,CALLBACK_URL)

# 访问授权页,让用户授权
authorize_url = client.get_authorize_url(redirect_uri = CALLBACK_URL)

#打开浏览器,需手动找到地址栏中URL里的code字段 
webbrowser.open(authorize_url)

# 手动输入新浪返回的code
code = raw_input("input the code: ").strip()

# 获得用户授权
request = client.request_access_token(code) # 请求access_token
access_token = request.access_token  # 新浪返回的token,类似abc123xyz456
expires_in = request.expires_in  # token过期的UNIX时间

print 'Successfully get access_token:',access_token
print 'Successfully get expires_in:',expires_in

client.set_access_token(access_token, expires_in)

# 获取用户所关注的好友,并统计好友性别
screen_name=u"XXX某某某" # 输入该用户昵称,注意本代码的编码是utf8,否则昵称为中文的时候会报错
resFriends = []
nextCursor = -1

while nextCursor != 0:
    friends = client.get.friendships__friends(screen_name=screen_name,count=200,cursor=nextCursor)
    nextCursor = friends["next_cursor"]
    for friend in friends["users"]:
        resFriends.append( (friend["screen_name"],friend["gender"]) )


m = 0 # male
f = 0 # female
n = 0 # others
for i in resFriends:
    if i[1] == 'm':
        m = m+1
    elif i[1] == 'f':
        f = f+1
        
    else:
        n = n+1
    
print 'The total number of the friends:',len(resFriends)
print 'The number of male friends:',m
print 'The number of famale friends:',f
print 'The number of others:',n


 直接运行该程序,首先会弹出回调页面给出code码,需要手动复制该code码,在python运行界面输入该code码:

 

运行结果如下所示:

 

参考资料

Auth2.0微博应用范例

使用python调用新浪微博API的小经历

使用python进行新浪微博应用开发

使用python sdk 调用sina weibo API(OAuth2.0)

新浪微博API文档

新浪微博错误代码说明


转载请注明出处 http://blog.csdn.net/minenki/article/details/8836293

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值