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模块学习 filecmp 文件比较
Aug 27 Python
简单介绍Ruby中的CGI编程
Apr 10 Python
python返回昨天日期的方法
May 13 Python
举例讲解Python的lambda语句声明匿名函数的用法
Jul 01 Python
Python关于excel和shp的使用在matplotlib
Jan 03 Python
Django之创建引擎索引报错及解决详解
Jul 17 Python
深入了解python中元类的相关知识
Aug 29 Python
python pygame实现球球大作战
Nov 25 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
Apr 22 Python
Python过滤序列元素的方法
Jul 31 Python
如何用python插入独创性声明
Mar 31 Python
Python  序列化反序列化和异常处理的问题小结
Dec 24 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
PHP4实际应用经验篇(3)
2006/10/09 PHP
header()函数使用说明
2006/11/23 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
遍历echsop的region表形成缓存的程序实例代码
2016/11/01 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
javascript prototype原型操作笔记
2009/12/07 Javascript
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
JavaScript实现图片切换效果
2017/08/12 Javascript
深入浅出es6模板字符串
2017/08/26 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
layui的select联动实现代码
2019/09/28 Javascript
python使用百度翻译进行中翻英示例
2014/04/14 Python
python利用有道翻译实现"语言翻译器"的功能实例
2017/11/14 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
Python: 传递列表副本方式
2019/12/19 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
业务总经理岗位职责
2014/02/03 职场文书
单方离婚协议书范本(2014版)
2014/09/30 职场文书
故宫的导游词
2015/01/31 职场文书
党员自我评价范文2015
2015/03/03 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
JDBC连接的六步实例代码(与mysql连接)
2021/05/12 MySQL
Python 中random 库的详细使用
2021/06/03 Python
Redis集群新增、删除节点以及动态增加内存的方法
2021/09/04 Redis