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查找目录下指定扩展名的文件实例
Apr 01 Python
python简单线程和协程学习心得(分享)
Jun 14 Python
python写一个md5解密器示例
Feb 23 Python
python退出命令是什么?详解python退出方法
Dec 10 Python
用Python中的turtle模块画图两只小羊方法
Apr 09 Python
使用Python函数进行模块化的实现
Nov 15 Python
基于Python实现扑克牌面试题
Dec 11 Python
经验丰富程序员才知道的8种高级Python技巧
Jul 27 Python
Python接口自动化测试的实现
Aug 28 Python
详解python算法常用技巧与内置库
Oct 17 Python
Python 2.6.6升级到Python2.7.15的详细步骤
Dec 14 Python
Python实现随机生成迷宫并自动寻路
Jun 13 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数据库操作方法(MYSQL版)
2011/06/08 PHP
解析MySql与Java的时间类型
2013/06/22 PHP
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
XP折叠菜单&仿QQ2006菜单
2006/12/16 Javascript
图片自动缩小 点击放大
2008/07/07 Javascript
JS 类型转换常见方法小结
2010/05/31 Javascript
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
js获取RadioButtonList的Value/Text及选中值等信息实现代码
2013/03/05 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
jQuery对Select的操作大集合(收藏)
2013/12/28 Javascript
基于bootstrap3和jquery的分页插件
2015/07/31 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
2016/01/27 Javascript
JS原型链怎么理解
2016/06/27 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
详解angularJs中自定义directive的数据交互
2017/01/13 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
[58:18]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Mineski
2018/03/30 DOTA
Python中的Classes和Metaclasses详解
2015/04/02 Python
浅析Python的Django框架中的Memcached
2015/07/23 Python
简单了解python模块概念
2018/01/11 Python
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
pygame实现打字游戏
2021/02/19 Python
python判断变量是否为列表的方法
2020/09/17 Python
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
用人单位终止解除劳动合同证明书
2014/10/06 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书
判断Python中的Nonetype类型
2021/05/25 Python
js实现自动锁屏功能
2021/06/02 Javascript
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js