Python脚本实现自动发带图的微博
作者:Tacey Wong 发布时间:2021-04-18 08:37:01
要自动发微博最简单的办法无非是调用新浪微博的API(因为只是简单的发微博,就没必要用它的SDK了)。参考开发文档http://open.weibo.com/wiki/API 进行代码编写
创建应用
要使用微博的API,需先要有个应用。随便是个应用就行,可以到这里注册一个站内应用应用注册。注册应用的主要目的是要获得MY_APPKEY 和MY_ACCESS_TOKEN,如图所示
获取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发表文字微博,其参数如下
其中必须的:
•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)
如果正常,会有向下面这样的结果
发表带图片的微博
调用接口http://open.weibo.com/wiki/2/statuses/upload发表图片微博,其参数如下:
其中必须的参数:
•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)
如果正常,结果会像下面这样:
注:requests的具体用法请参考[requests文档](http://docs.python-requests.org/en/master/)
猜你喜欢
- 测试过程如下:create table sales as select * f
- 1、监控规划在创建监控项之前要尽量考虑清楚要监控什么,怎么监控,监控数据如何存储,监控数据如何展现,如何处理报警等。要进行监控的系统规划需要
- 1、python 操作xml的方式介绍查看全部包含“三种⽅法:⼀是xml.dom. * 模块,它是W3CDOMAPI的实
- 协同开发时本地测试昨天的文章中提到了Go如何优雅的进行本地测试,今天分享一下:在多人协同开发中,如果大家都进行本地测试可能会出现的问题。最大
- phpMyAdmin 是一套可以通过WEB来管理 MySQL-server 以及单一数据库的 PHP
- 一、什么是Django ContentTypes?Django ContentTypes是由Django框架提供的一个核心功能,它对当前项目
- 本文记录了python 3.7.0 安装配置方法,供大家参考,具体内容如下S1 登入Python官网下载网址S2 下载后缀为exe的可执行文
- 获取输入的五个点画五边形def pentagonUpdate(): p = {} win = GraphWin(&q
- 锁有两种分类方法。(1) 从数据库系统的角度来看锁分为以下三种类型: •独占锁(Exclusive Lock)独占锁锁定的资源只允许进行锁定
- 目录介绍Python连接MySQL实现数据储存总结介绍MySQL是一个关系型数据库,MySQL由于性能高、成本低、可靠性好,已经成为最流行的
- 关于 TensorFlowTensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(N
- 删除一条留言信息会级联删除回复信息,这时我们需要用到事务,如下SQL 代码如下:ALTER PROCEDURE [dbo].[proc_tb
- Mysql InnoDB引擎页目录一、页目录和槽接上一篇,现在知道记录在页中按照主键大小顺序串成了单链表。那么我使用主键查询的时候,最顺其自
- 统计平均数SELECT AVG() FROM 语法用于从数据表中统计数据平均数。语法:SELECT AVG(column) FROM tb_
- 以下是一些python的list和set的基本操作1. list的一些操作list = [1, 2, 3]list.append(5)pri
- Cookies,有些人喜欢它们,有些人憎恨它们。但是,很少有人真正知道如何使用它们。现在你可以成为少数人中的成员-可以自傲的Cookie 大
- 目录1 简介2 在Dash中实现文件上传与下载2.1 在Dash中配合dash-uploader实现文件上传2.1.1
- 比如 1--1 2--1  
- 最近刚开始学python,正好实习工作中遇到对excel中的数据进行处理的问题,就想到利用python来解决,也恰好练手。实际的问题是要从e
- Linux sort命令用于将文本文件内容加以排序。sort可针对文本文件的内容,以行为单位来排序。在 Linux、BSD 或 Mac 的终