python发微博_Python自动化发微博(使用原生API)

虽然有第三方的Python库,但也只是对request请求作简单的封装。所以以下将不使用第三方库。

创建应用

要使用微博的API,需先要有个应用。随便哪个应用都行,注册应用的主要目的是要获得App Key 和App Secret。

获取access_token

API的调用需要登录授权获得access_token。这个过程需要分为两步进行,首先获取所需要的code,然后再去获取access_token。

①调用https://api.weibo.com/oauth2/authorize接口,获得code。

client_id:申请应用时分配的AppKey

redirect_url:授权回调地址,站外应用需与设置的回调地址一致

importrequeststry:from urllib.parse importurlencodeexceptImportError:from urllib importurlencode

API_KEY= ‘xxx‘REDIRECT_URI= ‘https://www.cnblogs.com/lfri/‘authorization_url= ‘https://api.weibo.com/oauth2/authorize‘

defauthorize_url():

params={‘client_id‘: API_KEY,‘redirect_uri‘: REDIRECT_URI

}return "{0}?{1}".format(authorization_url, urlencode(params))print(authorize_url())

②调用https://api.weibo.com/oauth2/access_token接口,获得access_token

client_id:申请应用时分配的AppKey。

client_secret:申请应用时分配的AppSecret。

grant_type:请求的类型,填写authorization_code

code:调用authorize获得的code值

redirect_uri:回调地址,需需与注册应用里的回调地址一致。

importrequestsimportjsontry:from urllib.parse importurlencodeexceptImportError:from urllib importurlencode

API_KEY= ‘xxx‘API_SECRET= ‘xxx‘CODE= ‘a7000e13f766d586b1970f007aa615d6‘REDIRECT_URI= ‘https://www.cnblogs.com/lfri/‘access_token_url= ‘https://api.weibo.com/oauth2/access_token‘params={‘client_id‘: API_KEY,‘client_secret‘: API_SECRET,‘grant_type‘: ‘authorization_code‘,‘code‘: CODE,‘redirect_uri‘: REDIRECT_URI

}

res= requests.post(access_token_url, data=params)

token=json.loads(res.text)print(token)

返回的结果是如下格式:

{‘access_token‘: ‘xxx‘,‘remind_in‘: ‘157679999‘,‘expires_in‘: 157679999,‘uid‘: ‘xxx‘,‘isRealName‘: ‘true‘}

根据返回的数据,access_token的值就是我们要的。其中remind_in的值是access_token的有效期,单位为秒,我们可以看到,这个时间有5年之久,足够我们用了。

发送文字微博

调用接口https://api.weibo.com/2/statuses/share.json

请求必须用POST方式提交,有上传图片时需要采用multipart/form-data编码方式,没有上传图片则采用正常编码方式;

importrequests

access_token= ‘xxx‘url= "https://api.weibo.com/2/statuses/share.json"

#构建POST参数

params ={"access_token": access_token,"status": "百度一下!https://www.baidu.com"}#POST请求,发表文字微博

res = requests.post(url,data =params)print(res.text)

发送图片微博

importrequests

access_token= ‘2.00e8WgwG314IgEeffed3bb2dT68k2B‘url= "https://api.weibo.com/2/statuses/share.json"

#构建POST参数

params ={"access_token": access_token,"status": "小年快乐!https://www.baidu.com"}#构建二进制multipart/form-data编码的参数

files={"pic":open("nian.jpg","rb")

}#POST请求,发表文字微博

res = requests.post(url,data = params, files =files)#print(res.text)

效果:

参考链接:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值