Python脚本实现自动发带图的微博


Posted in Python onApril 27, 2016

 要自动发微博最简单的办法无非是调用新浪微博的API(因为只是简单的发微博,就没必要用它的SDK了)。参考开发文档http://open.weibo.com/wiki/API 进行代码编写

创建应用

要使用微博的API,需先要有个应用。随便是个应用就行,可以到这里注册一个站内应用应用注册。注册应用的主要目的是要获得MY_APPKEY 和MY_ACCESS_TOKEN,如图所示

Python脚本实现自动发带图的微博

获取access_token

API的调用需要登录授权获得access_token。参考

首先,调用https://api.weibo.com/oauth2/authorize接口,获得code。

该接口有三个必须的参数:

•client_id:申请应用时分配的AppKey。
•redirect_url:就是创建应用中设置的回调地址
•response_type:响应类型,可设置为code

具体做法,就是在浏览器打开https://api.weibo.com/oauth2/authorize?client_id=123050457758183&redirect_uri=http://www.example.com/response&response_type=code。该方法会转到授权页面,授权之后会转到http://www.example.com/response&code=CODE,记录下该url中的CODE。

接着,调用https://api.weibo.com/oauth2/access_token接口,获得access_token。

该接口有如下必须的参数:

•client_id:申请应用时分配的AppKey。
•client_secret:申请应用时分配的AppSecret。
•grant_type:请求的类型,填写authorization_code
•code:调用authorize获得的code值。
•redirect_uri: 就是创建应用中设置的回调地址

具体做法就是构建一个POST请求,再在返回的数据中找到access_token,保存下来。具体的Python代码:

import requests
url_get_token = "https://api.weibo.com/oauth2/access_token"
#构建POST参数
playload = {
"client_id":"填入你的",
"client_secret":"填入你的",
"grant_type":"authorization_code",
"code":"上面获得的CODE",
"redirect_uri":"你的回调用地址"
}
#POST请求
r = requests.post(url_get_token,data=playload)
#输出响应信息
print r.text

如果正常的话,会返回下面这样的json数据:

{"access_token":"我们要记下的","remind_in":"157679999","expires_in":157679999,"uid":"1739207845"}

根据返回的数据,access_token的值就是我们要的。其中remind_in的值是access_token的有效期,单位为秒,我们可以看到,这个时间有3、4年之久,足够我们用了。

发表纯文字微博

调用接口https://api.weibo.com/2/statuses/update.json发表文字微博,其参数如下

Python脚本实现自动发带图的微博

其中必须的:

•access_token: 就是我们上一步获得的access_token
•status:要发布的微博文本内容,必须做URLencode,内容不超过140个汉字

具体代码:

#发表文字微博的接口
url_post_a_text = "https://api.weibo.com/2/statuses/update.json"
#构建POST参数
playload = {
"access_token":"填入你的",
"status":"This is a text test@TaceyWong"
}
#POST请求,发表文字微博
r = requests.post(url_post_a_text,data = playload)

如果正常,会有向下面这样的结果

Python脚本实现自动发带图的微博

发表带图片的微博

调用接口http://open.weibo.com/wiki/2/statuses/upload发表图片微博,其参数如下:

Python脚本实现自动发带图的微博

其中必须的参数:

•access_token: 就是我们上一步获得的access_token
•status:要发布的微博文本内容,必须做URLencode,内容不超过140个汉字
•pic:要发表的图片,采用multipart/form-data编码方式

具体的代码:

#发表图文微博的接口
url_post_pic = "https://upload.api.weibo.com/2/statuses/upload.json"
#构建文本类POST参数
playload={
"access_token":"2.0086XhtBIQLH7Ed67706b6c8TQ8XdE",
"status":"Test:Post a text with a pic & AT someone@丸子?"
}
#构建二进制multipart/form-data编码的参数
files={
"pic":open("logo.png","rb")
}
#POST请求,发表微博
r = requests.post(url_post_pic,data=playload,files = files)

如果正常,结果会像下面这样:

Python脚本实现自动发带图的微博

注:requests的具体用法请参考[requests文档](http://docs.python-requests.org/en/master/)

Python 相关文章推荐
ssh批量登录并执行命令的python实现代码
May 25 Python
python查找第k小元素代码分享
Dec 18 Python
Python科学计算环境推荐——Anaconda
Jun 30 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
Jan 07 Python
Python logging模块用法示例
Aug 28 Python
python获取磁盘号下盘符步骤详解
Jun 19 Python
PyQt 图解Qt Designer工具的使用方法
Aug 06 Python
Pytorch的mean和std调查实例
Jan 02 Python
Python list运算操作代码实例解析
Jan 20 Python
python中类与对象之间的关系详解
Dec 16 Python
python常量折叠基础知识点讲解
Feb 28 Python
python 实现两个变量值进行交换的n种操作
Jun 02 Python
Python实现新浪博客备份的方法
Apr 27 #Python
Python2.7简单连接与操作MySQL的方法
Apr 27 #Python
Python判断文本中消息重复次数的方法
Apr 27 #Python
python脚本监控docker容器
Apr 27 #Python
Python多进程同步简单实现代码
Apr 27 #Python
Python对象转JSON字符串的方法
Apr 27 #Python
Python利用前序和中序遍历结果重建二叉树的方法
Apr 27 #Python
You might like
php入门学习知识点一 PHP与MYSql连接与查询
2011/07/14 PHP
PHP实现删除非站内外部链接实例代码
2014/06/17 PHP
thinkphp跨库操作的简单代码实例
2016/09/22 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
2015/12/10 Javascript
JavaScript对象参数的引用传递
2016/01/14 Javascript
Servlet实现文件上传,可多文件上传示例
2016/12/05 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
微信小程序删除处理详解
2017/08/16 Javascript
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
2018/11/12 Javascript
Vue.js下拉菜单组件使用方法详解
2019/10/19 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
[01:09:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第一场 6.2
2018/06/04 DOTA
Python内置函数 next的具体使用方法
2017/11/24 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
Python(PyS60)实现简单语音整点报时
2019/11/18 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
python selenium 获取接口数据的实现
2020/12/07 Python
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
2016/03/21 HTML / CSS
医学院四年学习生活的自我评价
2013/11/06 职场文书
化工专业个人的求职信范文
2013/11/28 职场文书
小区门卫值班制度
2014/01/24 职场文书
评析教师个人的自我评价
2014/02/19 职场文书
环保倡议书400字
2014/05/15 职场文书
体育专业自荐书
2014/05/29 职场文书
审计班子对照检查材料
2014/08/27 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
2014年就业工作总结
2014/11/26 职场文书
村干部任职承诺书
2015/01/21 职场文书
博物馆观后感
2015/06/05 职场文书
《观潮》教学反思
2016/02/17 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
CSS 新特性 contain控制页面的重绘与重排问题
2021/04/30 HTML / CSS
奥特曼十大神器:奥特手镯在榜,第一是贝利亚的神器
2022/03/18 日漫
VUE递归树形实现多级列表
2022/07/15 Vue.js