技术入门 | python利用微博api获取数据
文 | thewords
这也是跳票许久的分享。在写之前发现目前比较少公开的第三方api,有些还停止维护,所以在一轮筛选后选择了微博api进行实践。
01 申请开发者权限
1) 进入微博开放平台,完成开发者认证
具体链接:
http://open.weibo.com/index.php
完成示意:
2) 获取App Key、AppSecret
进入微连接中的移动应用,申请新应用;在应用信息中的基本信息获取App Key、AppSecret
具体链接:
http://open.weibo.com/development/mobile
完成示意:
02 获取access_token
1) 下载并安装微博python sdk(sinaweibopy)
安装说明:
http://github.liaoxuefeng.com/sinaweibopy/
2) 利用sinaweibopy获取access_token
示例代码:
from weibo import APIClient
import webbrowser
APP_KEY = '0123456789‘ #获取的App Key
APP_SECRET = '9e3484b8fb24f9260af0e47b097f18b7' #获取的AppSecret
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()
webbrowser.open_new(url) #打开默认浏览器获取code参数
print '输入url中code后面的内容后按回车键:'
code = raw_input()
浏览器打开的链接示意:
https://api.weibo.com/oauth2/default.html?code=61e30dfb3568d66e418b4c418bf9d750
输入参数code的值 r = client.request_access_token(code)
access_token = r.access_token
expires_in = r.expires_in
client.set_access_token(access_token, expires_in)
03 通过api 文档进行数据获取
api文档链接
http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI
1) 以statuses/home_timeline 接口作为例子进行数据获取
了解获取数据需要的请求参数
2) 授权用户uid可在用户首页的链接获取,".com/"之后就是uid
示意链接:
http://weibo.com/0123456789/profile
3) 每个接口的“/”换成“.”,用get方法传递参数 r = client.statuses.home_timeline.get(uid = 0123456789)
4) 阅读返回json数据的结构,进行输出结果处理
示意代码: for st in r.statuses:
print st.text
最后返回的数据示意如下:
需要说明的是,本文使用的App Key、AppSecret为测试使用,对于使用时长、使用频率都有所限制。实际用于生产环境,建议进行认证。
在成功利用api获取数据后,接下来就应该存放到数据库,然后设置定时机制,在一定的api限制条件下进行数据获取。或者直接存储到相应的文件(txt,csv)便于进一步分析。这些都取决于数据的使用场景。
题图来源:@Free-Photos
图片授权基于:CC0协议
本文来源于网络,版权归作者所有