各位用户为了找寻关于Python脚本实现自动发带图的微博的资料费劲了很多周折。这里教程网为您整理了关于Python脚本实现自动发带图的微博的相关资料,仅供查阅,以下为您介绍关于Python脚本实现自动发带图的微博的详细内容
要自动发微博最简单的办法无非是调用新浪微博的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代码:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14import
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数据:
? 1{
"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个汉字
具体代码:
? 1 2 3 4 5 6 7 8 9#发表文字微博的接口
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编码方式
具体的代码:
? 1 2 3 4 5 6 7 8 9 10 11 12 13#发表图文微博的接口
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/)