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的web框架编写MVC配置来使其运行的教程
Apr 30 Python
python获取指定时间差的时间实例详解
Apr 11 Python
Python 多线程Threading初学教程
Aug 22 Python
详解Python开发中如何使用Hook技巧
Nov 01 Python
详解Python进阶之切片的误区与高级用法
Dec 24 Python
python里 super类的工作原理详解
Jun 19 Python
pycharm中显示CSS提示的知识点总结
Jul 29 Python
Python爬虫学习之翻译小程序
Jul 30 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
Dec 27 Python
pandas dataframe 中的explode函数用法详解
May 18 Python
python适合做数据挖掘吗
Jun 16 Python
python基础之爬虫入门
May 10 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+Html+缓存
2006/12/20 PHP
PHP中的extract的作用分析
2008/04/09 PHP
php实现的在线人员函数库
2008/04/09 PHP
php实现的双色球算法示例
2017/06/20 PHP
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
2014/06/24 Javascript
JavaScript实现在页面间传值的方法
2015/04/07 Javascript
JQuery鼠标移到小图显示大图效果的方法
2015/06/10 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
2016/06/01 Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
2016/07/05 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
vue获取验证码倒计时组件
2019/08/26 Javascript
webgl实现物体描边效果的方法介绍
2019/11/27 Javascript
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
python sort、sorted高级排序技巧
2014/11/21 Python
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
Python编程之字符串模板(Template)用法实例分析
2017/07/22 Python
python中numpy的矩阵、多维数组的用法
2018/02/05 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
使用sklearn对多分类的每个类别进行指标评价操作
2020/06/11 Python
Prometheus开发中间件Exporter过程详解
2020/11/30 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
Mybag美国/加拿大:英国奢华包包和名牌手袋网站
2020/02/16 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
DataList 能否分页,请问如何实现?
2015/05/03 面试题
初中考试作弊检讨书
2014/02/01 职场文书
企业精细化管理实施方案
2014/03/23 职场文书
活动宣传策划方案
2014/05/23 职场文书
公司人事专员岗位职责
2014/08/11 职场文书