新浪微博API的使用Python
本文记录了用新浪微博官方Python SDK调用API进行开发的流程。
准备工作
申请成为开发者并创建一个应用:
首先要有一个新浪微博的账号,然后去新浪微博开放平台(http://open.weibo.com/)创建一个应用,具体的步骤官网文档介绍的非常详细:在开发者页面点击“登录” -> “创建应用” -> 选择应用类型(如“网页应用”)-> 填写应用信息。
P.S.,应用需要设置一个回调地址(CALL_BACK),可以设定为默认的回调网址:https://api.weibo.com/oauth2/default.html。
这一步完成后,将得到三个有用的信息:APP_KEY,APP_SECRET和CALL_BACK,这三个信息在后面编写程序时将用到。
OAuth2.0授权
微博开放接口的调用,如发微博、关注等,都是需要获取用户身份认证的。目前微博开放平台用户身份鉴权主要采用的是OAuth2.0。官方文档有非常详细的说明,了解了授权机制后有助于使用SDK编写程序的过程。
下载和安装新浪微博Python SDK
打包下载新浪微博官方Python SDK,网页中说明了安装有两种方式,第一种用命令行工具pip安装,第二种下载源码包安装。
对于第一种安装方式,pip是Python的包管理工具,可以很方便的安装Python模块。安装成功后,只需在命令行(或linux终端)中执行pip install sinaweibopy,SDK的包sinaweibopy就安装完毕。测试是否安装成功,可以在python命令行中输入:import weibo,如果没有错误提示说明安装成功。实际上Python SDK主要就是模块weibo,后面在使用SDK时就是调用该模块中的函数。
对于第二种方式,需要拷贝下载的源码到安装目录或者配置Python模块搜索的Path中。
读写微博接口程序
下面就可以调用微博API写微博操作程序了,下面简单介绍一个抓取微博数据的程序。
# _*_ coding: utf-8 _*_
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from weibo import APIClient
import json
import webbrowser
import io APP_KEY = '' ## 填写应用程序的信息
APP_SECRET = ''
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()
# TODO: redirect to url webbrowser.open_new(url)
#print url
# obtain url code:
code = raw_input("input the code: ").strip()
client = APIClient(app_key=APP_KEY, app_secret=APP_SECRET, redirect_uri=CALLBACK_URL)
r = client.request_access_token(code)
access_token = r.access_token # 新浪返回的token,类似abc123xyz456
expires_in = r.expires_in # token过期的UNIX时间:http://zh.wikipedia.org/wiki/UNIX%E6%97%B6%E9%97%B4
# TODO: 在此可保存access token
client.set_access_token(access_token, expires_in) res = client.statuses.public_timeline.get(count=200) ##返回最新的200条热门微博
#res = client.statuses.user_timeline.get() ##返回作者发布的历史微博
#res = client.statuses.friends_timeline.ids.get() ##返回好友发布的微博id
#res=client.emotions.get() a = json.dumps(res, ensure_ascii = False,indent = 2)
fout = io.open('test','w',encoding='utf-8')
fout.write(a)
运行程序,自动打开回调页,将网址内的“code”拷贝至程序,程序执行成功后,就可以得到微博数据了。


这里实际是调用新浪微博提供的API,具体参考官方文档。
新浪微博API的使用Python的更多相关文章
- 新浪微博API使用初步介绍——解决回调地址的问题
# -*- coding: utf-8 -*- #python 27 #xiaodeng #新浪微博API使用初步介绍——解决回调地址的问题 #http://blog.csdn.net/monsion ...
- python编程之API入门: (二)python3中使用新浪微博API
回顾API使用的流程 通过百度地图API的使用,我理解API调用的一般流程为:生成API规定格式的url->通过urllib读取url中数据->对json格式的数据进行解析.下一步,开始研 ...
- 【重要】新浪微博api研究
# -*- coding: utf-8 -*- #python 27 #xiaodeng #新浪微博api研究 ''' 3.SDK的使用规则: 1)使用微博API,需要通过用户的授权,获取用户的授权码 ...
- Windows API Hooking in Python
catalogue . 相关基础知识 . Deviare API Hook Overview . 使用ctypes调用Windows API . pydbg . winappdbg . dll inj ...
- 以短链服务为例,探讨免AppKey、免认证、Ajax跨域调用新浪微博API
新浪微博的API官方提供了很多种调用方式,支持编程的,归根结底就是两种: 1.基于Oauth协议,使用Open API.(http://open.weibo.com/wiki/%E6%8E%88%E6 ...
- paip.文件读写api php java python总结.txt
paip.文件读写api php java python总结.txt 一.多种方式读文件内容. 1.按字节读取文件内容 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. ...
- java parse 带英文单词的日期字符串 转 date (转化新浪微博api返回的时间)
拂晓风起 专注前端技术cocos2d.js.flash.html5,联系:kenkofox@qq.com.如果读者要找腾讯工作机会,请不吝推荐简历. 博客园 首页 新闻 新随笔 联系 管理 订阅 随笔 ...
- 新浪微博API生成短链接
通过新浪微博API,生成短链接,支持一次性转多个长链接 什么是短链接 短链接,通俗来说,就是将长的URL网址,通过程序计算等方式,转换为简短的网址字符串. 短链接服务 国内各大微博都推出了自己的短链接 ...
- 搜索引擎--范例:新浪微博API获取最近的微博--statuses/public_timeline
新浪微博平台跟新浪SAE一样,都是一个字“坑”,好了,不再吐槽,直入主题 1:直接登录新浪,添加网站,就直接添加我们在新浪SAE上创建的应用即可 2:填写信息,ICP备案信息号填写sinaapp.co ...
随机推荐
- hash(2018年CSUST省赛选拔赛第一场B题+hash+字典树)
题目链接:http://csustacm.com:4803/problem/1006 题目: 思路:正如题目一样,本题是一个hash,比赛的时候用的字典树,但是不知道为什么一直RE(听学长说要动态开点 ...
- Verilog笔记.6.FIFO
FIFO,First In First Out ,是一种先进先出的数据缓存器. 没有外部读写地址线,只能顺序写入数据,顺序的读出数据, 其数据地址由内部读写指针自动加1完成. 不能像普通存储器那样可以 ...
- L - SOS Gym - 101775L 博弈
题目链接:https://cn.vjudge.net/contest/274151#problem/L 题目大意:给你一个1*n的方格,两个人轮流放字母,每一次可以放"S"或者&q ...
- Lucene7.2.1系列(三)查询及高亮
系列文章: Lucene系列(一)快速入门 Lucene系列(二)luke使用及索引文档的基本操作 Lucene系列(三)查询及高亮 一 准备 创建项目并添加Maven依赖 <dependenc ...
- 使用navicat for sqlserver 把excel中的数据导入到sqlserver数据库
以前记得使用excel向mysql中导入过数据,今天使用excel向sqlserver2005导入了数据,在此把做法记录一下 第一步:准备excel数据,在这个excel中有3个sheet,每个she ...
- [转载]hazard pointer
hazard pointer 转载自: http://hi.baidu.com/rodimus/item/f6539cc179894f2f47d5c0ef 这是用于解决多线程并发下内存的回收,一块内存 ...
- BeanUtils封装对象时一直提示ClassNotFoundException:org.apache.commons.beanutils.BeanUtils
导包明明正确了,依赖包也全都导对了,还是出错. 困扰了3天. 后来看到这篇博文,https://blog.csdn.net/yanshaoshuai/article/details/81624890 ...
- Dagger:快速的依赖注入for 安卓&Java
Dagger:快速的依赖注入for 安卓&Java 2014年5月8日 星期四 15:29 官网: http://square.github.io/dagger/ GitHub: https: ...
- linux下redis的安装与部署
一.Redis介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多 ...
- CTF中的EXP编写技巧 zio库的使用
zio库没有提供文档 这个是官方给出的一个例子程序 from zio import * io = zio('./buggy-server') # io = zio((pwn.server, 1337) ...