python:从0开始自动发微博


前言

由于学院的微博需要发早安,晚安,而我经常忘记发,所以索性写个自动发微博的程序,放到服务器上。。。。。



一、微博

1.注册一个微博

2.注册一个应用

python:从0开始自动发微博_第1张图片
python:从0开始自动发微博_第2张图片
名称随便取一个就行,分类和平台选择我们最熟悉的windows就可以了
python:从0开始自动发微博_第3张图片
应用地址随便填一个,安全域名这时候可以不填,也可以填。(安全域名只支持传统域名.com .cn 非传统域名.xyz等会提示错误)

还是说一下吧,现在用接口发微博发出来会带一个 #网页链接 python:从0开始自动发微博_第4张图片
强制带上一个链接,这个链接如果没有给就会报错,如果给了但不是安全域名的子链接还是会报错

python:从0开始自动发微博_第5张图片
授权回调页随便填一个就行

微博的操作到此结束

二、Python

1.授权

代码如下(示例):

import requests
try:
    from urllib.parse import urlencode
except ImportError:
    from urllib import urlencode

API_KEY = '申请后给你的App Key'
REDIRECT_URI = '授权回调页的网址'
url = 'https://api.weibo.com/oauth2/authorize'

def get_url():
    params = {
     
        'client_id': API_KEY,
        'redirect_uri': REDIRECT_URI
    }
    return "{0}?{1}".format(url, urlencode(params))


print(get_url())

输出结果
在这里插入图片描述
点击这个链接 之后点击授权 之后会跳转到一个新的网页
在这里插入图片描述
把code之后的红框里的东西复制下来

import requests
import json
try:
    from urllib.parse import urlencode
except ImportError:
    from urllib import urlencode

API_KEY = '申请后给你的App Key'
API_SECRET = '申请后给你的App Secret'
CODE = '刚才你复制的东西'
REDIRECT_URI = '授权回调页的网址'
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’: ‘xxx’,中的xxx复制下来,5年之内就不用再次授权了

2.开始发微博了

python:从0开始自动发微博_第6张图片

import requests
access_token =  'xxx'
url = "https://api.weibo.com/2/statuses/share.json"
params = {
     
    "access_token": access_token,
    "status": "文字+网址"
}
files={
     
"pic":open("图.jpg","rb")
}
res = requests.post(url,data = params, files = files)

可能出现的错误

  1. 错误:21322 重定向地址不匹配

    检查授权回调链接是否填写

  2. 错误:appkey not bind domain

    检查安全域名是否填写

  3. 错误:text not find domain!

    检查要发送的内容是否包含链接,因为现在新浪微博强制要求要带链接。

你可能感兴趣的:(python,微博)