Python自动化发微博(使用原生API)
Posted Rogn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:授权回调地址,站外应用需与设置的回调地址一致
import requests try: from urllib.parse import urlencode except ImportError: from urllib import urlencode API_KEY = \'xxx\' REDIRECT_URI = \'https://www.cnblogs.com/lfri/\' authorization_url = \'https://api.weibo.com/oauth2/authorize\' def authorize_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:回调地址,需需与注册应用里的回调地址一致。
import requests import json try: from urllib.parse import urlencode except ImportError: from urllib import urlencode 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编码方式,没有上传图片则采用正常编码方式;
import requests 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)
发送图片微博
import requests access_token = \'xxx\' 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)
效果:
参考链接:
1. Python自动化发微博
2. 微博开放平台API文档
以上是关于Python自动化发微博(使用原生API)的主要内容,如果未能解决你的问题,请参考以下文章