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操作列表的常用方法分享
Feb 13 Python
Python实现批量把SVG格式转成png、pdf格式的代码分享
Aug 21 Python
使用Python程序抓取新浪在国内的所有IP的教程
May 04 Python
对Python 2.7 pandas 中的read_excel详解
May 04 Python
解决python中使用plot画图,图不显示的问题
Jul 04 Python
详解python--模拟轮盘抽奖游戏
Apr 12 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
Aug 12 Python
利用Python计算KS的实例详解
Mar 03 Python
使用keras实现Precise, Recall, F1-socre方式
Jun 15 Python
Python 中如何写注释
Aug 28 Python
用Python 执行cmd命令
Dec 18 Python
python绘制云雨图raincloud plot
Aug 05 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&java(三)
2006/10/09 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
2014/06/30 PHP
PHP数字和字符串ID互转函数(类似优酷ID)
2014/06/30 PHP
PHP实现的激活用户注册验证邮箱功能示例
2017/06/06 PHP
jquery 可排列的表实现代码
2009/11/13 Javascript
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
2015/09/01 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
web前端开发中常见的多列布局解决方案整理(一定要看)
2017/10/15 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
JS实现“全选”和"全不选"功能代码实例
2020/02/06 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
Vue Element校验validate的实例
2020/09/21 Javascript
[43:32]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第一场
2014/05/26 DOTA
Python深入学习之对象的属性
2014/08/31 Python
python从入门到精通(DAY 1)
2015/12/20 Python
Python3学习笔记之列表方法示例详解
2017/10/06 Python
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
Python 从相对路径下import的方法
2018/12/04 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
次世代生活态度:Hypebeast
2018/07/05 全球购物
匡威荷兰官方网站:Converse荷兰
2018/10/24 全球购物
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
大学生家政服务项目创业计划书
2014/01/30 职场文书
研修第一天随笔感言
2014/02/15 职场文书
运动会广播稿20字
2014/02/18 职场文书
师恩难忘教学反思
2014/04/27 职场文书
三月学雷锋月活动总结
2014/04/28 职场文书
无财产无子女离婚协议书范文
2014/09/14 职场文书
2014年城市管理工作总结
2014/12/02 职场文书
谢师宴邀请函
2015/02/02 职场文书
董事长年会致辞
2015/07/29 职场文书
Dashboard管理Kubernetes集群与API访问配置
2022/04/01 Servers
Java使用HttpClient实现文件下载
2022/08/14 Java/Android