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 =  ‘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文档

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

时间: 2024-11-14 12:14:10

Python自动化发微博(使用原生API)的相关文章

Python爬虫实现半自动发微博

Python实现半自动发微博[用COOKIES代替模拟登录:用WAP版微博代替网页版微博:每次还要改post数据的URL...半半自动的感觉] 微博的内容是从糗事百科抓取的最热段子以及某网站的每日晚安. #!/usr/bin/python #coding=utf-8 import urllib import urllib2 import time import requests import re from bs4 import BeautifulSoup import sys import o

[PHP] 调用微博API 发微博OAuth2.0

在实际测试中出现很多问题, 第一就是按照文档调用ACCESS_TOKEN的时候费老劲啦,因为是编辑线上的,有好多中文空格,没有看出来!整了好久! 第二个就是在调用api发微博的时候出现乱码!必须把发送内容转化成URLcode的格式! 还有就是在index.php文件标红的$URL地址传输的时候问题! 下面看码吧,还有就是封装好的伪造表单提交curl.class.php的类! 文件:weibo.php 1 <!DOCTYPE html> 2 <html lang="en"

Java调用 新浪微博API 接口发微博,逐条讲解,绝对清晰

最近要做个课程设计,使用微博控制树莓派,树莓派再控制发光二极管的亮和灭,主要设计分两层,上层是用Java调用新浪微博API来实现对微博旳监听,当我的微博被回复时能够自动读取评论内容,并根据评论的指令内容来决定树莓派的控制动作.下层是用C语言调用操作系统底层接口来实现用树莓派GPIO接口控制发光二极管的闪烁.亮灭. 由于网上教程都很老了,最近微博接口发生了很多变化,所以我决定全新写一篇详细的博文,如若能对您起到帮助作用,那将是我莫大的荣幸.同时我非常希望能与您交流,有问题请在评论里回复我. 本文将

Python自动化 【第十一篇】:Python进阶-RabbitMQ队列/Memcached/Redis

 本节内容: RabbitMQ队列 Memcached Redis 1.  RabbitMQ 安装 http://www.rabbitmq.com/install-standalone-mac.html 安装python rabbitMQ module pip install pika or easy_install pika or 源码 https://pypi.python.org/pypi/pika 实现最简单的队列 send 端 received 端 1.1 Work Queues 在这

python自动化办公?学这些就够用了

知乎上有人提问:用python进行办公自动化都需要学习什么知识呢? 这可能是很多非IT职场人士面临的困惑,想把python用到工作中,却不知如何下手? python在自动化办公领域越来越受欢迎,批量处理简直是加班族的福音. 自动化办公无非是excel.ppt.word.邮件.文件处理.数据分析处理.爬虫这些,这次我就来理一理python自动化办公的那些知识点. python基础 excel自动化 ppt自动化 word自动化 邮件处理 文件批量处理 数据处理与分析 自动化爬虫 下面一一详解. p

Python自动化面试必备 之 你真明白装饰器么?

装饰器是程序开发中经常会用到的一个功能,用好了装饰器,开发效率如虎添翼,所以这也是Python面试中必问的问题,但对于好多小白来讲,这个功能 有点绕,自学时直接绕过去了,然后面试问到了就挂了,因为装饰器是程序开发的基础知识,这个都 不会,别跟人家说你会Python, 看了下面的文章,保证你学会装饰器. 1.先明白这段代码 #### 第一波 #### def foo():     print 'foo'   foo     #表示是函数 foo()   #表示执行foo函数   #### 第二波 

Python自动化课之Day1篇 (未完)

开篇我其实想说,我是一个连接口是什么都需要百度来理解半天的百分百零基础技术渣,之前的十年工作除了穿插其中的几次项目管理经验,技术方面就是手机+黑盒+天天按照step点点点,一年的技术经验用了十年而已.虽然报名的时候助教说这是零基础python自动化班,可第一节课上下来发现其实大家还都是从事互联网相关行业的,所以可能都比我专业哈哈,只能尽自己最大的努力了.以下内容与其说是博客不如说是学习笔记了,希望有不对的地方有人给指出来~ Python自动化课Day1 第一阶段第一课:接口测试基础 目标:熟练掌

Python自动化打包业务和认证平台

/* GitHub stylesheet for MarkdownPad (http://markdownpad.com) */ /* Author: Nicolas Hery - http://nicolashery.com */ /* Version: b13fe65ca28d2e568c6ed5d7f06581183df8f2ff */ /* Source: https://github.com/nicolahery/markdownpad-github */ /* RESET =====

微博开放平台api使用

前言:微博开放平台提供了微博数据的api接口,不仅可以直接通过api调用微博服务发布微博查询微博,更重要的是,可以在自己的网站上获得新浪微博api的授权,调用微博的某些内容,就好像我们再网站中看到好文章要分享到微博或者其他社交网站中一样,非常方便. 下面就来探秘一番. 1.注册开发者并获取app key 和 app secret 百度很容易找到微博开放平台的入口,登录自己的微博账号,点击账号头像,会提示编辑开发者信息. 可以看到如下的页面,只需要按照提示填写,其中紧急联系人可以填自己,网站无所谓