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 map和reduce函数用法示例
Feb 26 Python
使用C语言来扩展Python程序和Zope服务器的教程
Apr 14 Python
关于Python中浮点数精度处理的技巧总结
Aug 10 Python
python使用opencv读取图片的实例
Aug 17 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
Dec 18 Python
python 切换root 执行命令的方法
Jan 19 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
May 23 Python
python中tkinter的应用:修改字体的实例讲解
Jul 17 Python
Django使用中间键实现csrf认证详解
Jul 22 Python
Django使用消息提示简单的弹出个对话框实例
Nov 15 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
Feb 11 Python
Pandas读取csv时如何设置列名
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
PL-880隐藏功能
2021/03/01 无线电
PHP 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
php实现的Timer页面运行时间监测类
2014/09/24 PHP
php判断邮箱地址是否存在的方法
2016/02/13 PHP
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
jquery向.ashx文件post中文乱码问题的解决方法
2011/03/28 Javascript
浅谈javascript中的作用域
2012/04/07 Javascript
3种不同方式的焦点图轮播特效分享
2013/10/30 Javascript
node.js实现BigPipe详解
2014/12/05 Javascript
javascript实现可拖动变色并关闭层窗口实例
2015/05/15 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
avalon js实现仿微博拖动图片排序
2015/08/14 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
推荐VSCode 上特别好用的 Vue 插件之vetur
2017/09/14 Javascript
vue自定义指令的创建和使用方法实例分析
2018/12/04 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
[43:57]Liquid vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python字符遍历的艺术
2008/09/06 Python
Python通过解析网页实现看报程序的方法
2014/08/04 Python
python文件与目录操作实例详解
2016/02/22 Python
Python实战购物车项目的实现参考
2019/02/20 Python
使用Python获取当前工作目录和执行命令的位置
2020/03/09 Python
在python image 中实现安装中文字体
2020/05/16 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
2020/07/09 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
HTML5 Canvas实现360度全景图的示例代码
2018/01/29 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
H&M美国官网:欧洲最大的服饰零售商
2016/09/07 全球购物
J2EE模式面试题
2016/10/11 面试题
机关单位动员会主持词
2014/03/20 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
出租车拒载检讨书
2015/01/28 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书