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中使用dom模块生成XML文件示例
Apr 05 Python
Python中文竖排显示的方法
Jul 28 Python
Python判断文本中消息重复次数的方法
Apr 27 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
python实现一个简单的ping工具方法
Jan 31 Python
python实现DEM数据的阴影生成的方法
Jul 23 Python
Python开发之pip安装及使用方法详解
Feb 21 Python
python实现超级玛丽游戏
Mar 18 Python
Python日志logging模块功能与用法详解
Apr 09 Python
python如何写出表白程序
Jun 01 Python
Python+Appium新手教程
Apr 17 Python
Python如何解决secure_filename对中文不支持问题
Jul 16 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
如何给phpadmin一个保护
2006/10/09 PHP
php explode函数实例代码
2012/02/27 PHP
php读取远程gzip压缩网页的方法
2014/12/29 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
2016/05/27 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
2017/07/10 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
解决json日期格式问题的3种方法
2014/02/02 Javascript
深入学习AngularJS中数据的双向绑定机制
2016/03/04 Javascript
js发送短信倒计时的简单实现方法
2016/09/08 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
JavaScript实现无刷新上传预览图片功能
2017/08/02 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
2019/08/01 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
2020/02/07 Javascript
微信小程序实现多选框功能的实例代码
2020/06/24 Javascript
vue实现井字棋游戏
2020/09/29 Javascript
python中numpy基础学习及进行数组和矢量计算
2017/02/12 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
python检索特定内容的文本文件实例
2018/06/05 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
解决Pycharm界面的子窗口不见了的问题
2019/01/17 Python
python列表生成器迭代器实例解析
2019/12/19 Python
Python第三方包之DingDingBot钉钉机器人
2020/04/09 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
小组合作学习反思
2014/02/18 职场文书
离婚协议书怎么写2014
2014/09/30 职场文书
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题
Python使用OpenCV实现虚拟缩放效果
2022/02/28 Python