码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-01-18 15:01:20      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:cep   ret   提交   min   param   使用   wiki   接口   multi   

虽然有第三方的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 =  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)

效果:

技术图片

 

 

参考链接:

1. Python自动化发微博

2. 微博开放平台API文档

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

标签:cep   ret   提交   min   param   使用   wiki   接口   multi   

原文地址:https://www.cnblogs.com/lfri/p/12208789.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!