{想在微博上抓点数据进行分析,费了一天多的时间,才终于找到点头绪,整理一下。}
目录:
一 注册创建应用获取认证和授权
二 新浪微博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码:
运行结果如下所示:
参考资料
使用python sdk 调用sina weibo API(OAuth2.0)
转载请注明出处 http://blog.csdn.net/minenki/article/details/8836293