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下的Softmax回归函数的实现方法(推荐)
Jan 26 Python
深入理解python中的atexit模块
Mar 07 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
May 19 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
Dec 14 Python
使用Python爬取最好大学网大学排名
Feb 24 Python
Django-Rest-Framework 权限管理源码浅析(小结)
Nov 12 Python
使用python3 实现插入数据到mysql
Mar 02 Python
Django 项目布局方法(值得推荐)
Mar 22 Python
Python如何利用正则表达式爬取网页信息及图片
Apr 17 Python
python基础之类属性和实例属性
Oct 24 Python
Python必备技巧之函数的使用详解
Apr 04 Python
基于PyQt5制作一个群发邮件工具
Apr 08 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之变量、常量学习笔记
2008/03/27 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
基于jquery的web页面日期格式化插件
2011/11/15 Javascript
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
js二维数组排序的简单示例代码
2014/01/24 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
JS实现倒计时(天数、时、分、秒)
2016/11/16 Javascript
如何写好你的JavaScript【推荐】
2017/03/02 Javascript
JavaScript利用fetch实现异步请求的方法实例
2017/07/26 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
全面分析JavaScript 继承
2019/05/30 Javascript
Vue 使用beforeEach实现登录状态检查功能
2019/10/31 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
python使用正则搜索字符串或文件中的浮点数代码实例
2014/07/11 Python
Python根据已知邻接矩阵绘制无向图操作示例
2018/06/23 Python
Django实现表单验证
2018/09/08 Python
Python 创建新文件时避免覆盖已有的同名文件的解决方法
2018/11/16 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
2020/01/03 Python
Python list运算操作代码实例解析
2020/01/20 Python
Python tkinter模版代码实例
2020/02/05 Python
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
澳大利亚领先的女帽及配饰公司:Morgan&Taylor
2019/12/01 全球购物
adidas菲律宾官网:adidas PH
2020/02/07 全球购物
大专学生求职信
2014/07/04 职场文书
委托书范本
2014/09/13 职场文书
区政府领导班子个人对照检查材料
2014/09/25 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
我的1919观后感
2015/06/03 职场文书
毕业生学校组织意见
2015/06/04 职场文书