Python每天定时自动发微博(使用原生API)【2022/05/26测试有效】
iamdu2022-05-26 10:01:01Python 浏览: 1257256 虽然有第三方的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 = 'http://www.henhaoji.net'
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())
复制打印的地址到浏览器打开
返回的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:回调地址,需需与注册应用里的回调地址一致。
import requests
import json
try:
from urllib.parse import urlencode
except ImportError:
from urllib import urlencode
API_KEY = 'xxx'
API_SECRET = 'xxx'
CODE = 'b97b5fb99cfecf3aea9af706ac67cea9'
REDIRECT_URI = 'http://www.henhaoji.net'
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": "百度一下!http://www.henhaoji.net"
}
#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)
=============================
如果需要每天定时发送,代码改进下
import schedule,requests,time
def job():
access_token = '' //填写获取的值
times = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
url = "https://api.weibo.com/2/statuses/share.json"
#构建POST参数
params = {
"access_token": access_token,
"status": "你好啊,看到就是缘分,这是一条AI发的微博!现在时间是:"+ times +"需要做微信小程序的可以联系我,企鹅号: 76123708,WX:iiamdu 【小程序开发】【微信小程序】【小程序定制】【AI发微博】,http://www.henhaoji.net"
}
#构建二进制multipart/form-data编码的参数
files={
"pic":open("1.jpg","rb")
}
#POST请求,发表文字微博
res = requests.post(url,data = params, files = files)
print('发送微博成功')
schedule.every().day.at("09:46").do(job)
while True:
schedule.run_pending()
time.sleep(1)
联系站长
友情链接
其他入口
QQ与微信加好友
粤ICP备17018681号 站点地图 www.iamdu.com 版权所有 服务商提供:阿里云 Designed by :DU
本站部分资源内容来源于网络,若侵犯您的权益,请联系删除!