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 相关文章推荐
python实现一次创建多级目录的方法
May 15 Python
Python中static相关知识小结
Jan 02 Python
分分钟入门python语言
Mar 20 Python
Python socket实现的简单通信功能示例
Aug 21 Python
pandas中的series数据类型详解
Jul 06 Python
python词云库wordcloud的使用方法与实例详解
Feb 17 Python
Pyspark读取parquet数据过程解析
Mar 27 Python
VScode连接远程服务器上的jupyter notebook的实现
Apr 23 Python
python 引用传递和值传递详解(实参,形参)
Jun 05 Python
Keras:Unet网络实现多类语义分割方式
Jun 11 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
Nov 28 Python
Python使用PyYAML库读写yaml文件的方法
Apr 06 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下将XML转换为数组
2010/01/01 PHP
Session保存到数据库的php类分享
2011/10/24 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
jQuery实现网页抖动的菜单抖动效果
2015/08/07 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
如何检测JavaScript的各种类型
2016/07/30 Javascript
原生JS实现跑马灯效果
2017/02/20 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
jQuery实现表单动态加减、ajax表单提交功能
2018/06/08 jQuery
详解Vue源码学习之callHook钩子函数
2018/07/25 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
微信小程序实现工作时间段选择
2019/02/15 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
Javascript实现单选框效果
2020/12/09 Javascript
[26:21]浴火之凤-TI4世界冠军Newbee战队纪录片
2014/08/07 DOTA
Python 遍历列表里面序号和值的方法(三种)
2017/02/17 Python
python生成随机图形验证码详解
2017/11/08 Python
便捷提取python导入包的属性方法
2018/10/15 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
使用gunicorn部署django项目的问题
2020/12/30 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
详解CSS中iconfont的使用
2015/08/04 HTML / CSS
科颜氏美国官网:Kiehl’s美国
2017/01/31 全球购物
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
上班睡觉检讨书
2014/01/09 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
中小学生学籍证明
2014/10/25 职场文书
解除劳动关系协议书2篇
2014/11/28 职场文书
2015小学教师年度工作总结
2015/05/12 职场文书
高三语文教学反思
2016/02/16 职场文书
高中地理教学反思
2016/02/19 职场文书
golang 实现对Map进行键值自定义排序
2021/04/28 Golang
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS