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的框架下的web app的详细教程
Apr 30 Python
详解使用Python处理文件目录的相关方法
Oct 16 Python
Python获取指定字符前面的所有字符方法
May 02 Python
python如何爬取个性签名
Jun 19 Python
python3.4爬虫demo
Jan 22 Python
Python中常用的内置方法
Jan 28 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
Python运行异常管理解决方案
Mar 09 Python
Python自动重新加载模块详解(autoreload module)
Apr 01 Python
keras实现theano和tensorflow训练的模型相互转换
Jun 19 Python
详解Python 函数参数的拆解
Sep 02 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
Jan 15 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
曾在DC漫画界反派角色扮演的演员,谁才是你心目中的小丑之王?
2020/04/09 欧美动漫
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
php数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
100行PHP代码实现socks5代理服务器
2016/04/28 PHP
php面向对象的用户登录身份验证
2017/06/08 PHP
php统计数组不同元素的个数的实例方法
2019/09/26 PHP
JavaScript 学习点滴记录
2009/04/24 Javascript
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
Javascript string 扩展库代码
2010/04/09 Javascript
javascript检测是否联网的实现代码
2014/09/28 Javascript
jQuery实现跟随鼠标运动图层效果的方法
2015/02/02 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
JQuery日历插件My97DatePicker日期范围限制
2016/01/20 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
移动端js图片查看器
2016/11/17 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
2017/05/19 jQuery
微信公众号H5支付接口调用方法
2019/01/10 Javascript
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
js实现无缝轮播图
2020/03/09 Javascript
实例讲解JavaScript 计时事件
2020/07/04 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
[58:35]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
HTML5事件方法全部汇总
2016/05/12 HTML / CSS
饲料采购员岗位职责
2013/12/19 职场文书
教师远程培训感言
2014/03/06 职场文书
服务质量承诺书
2014/03/27 职场文书
歌咏比赛主持词
2015/06/29 职场文书