python 微博_用python发微博
前言
前不久萌生了学习下python的想法,于是乎本着练手的目的做了这么个发微博的小玩意。
注册
新浪weibo允许第三方以应用的方式发布微博,所以我们首先要做的就是通过新浪微博开放平台注册一个应用:
weibo_open
打开上述平台的页面,用微博账号登录,然后点立即接入开始注册自己的应用,按提示操作即可。如下是我自己创建好的应用,名为share.cn:
app
在个人应用的应用信息-基本信息-应用基本信息处找到自己的App Key和App Secret。并在高级信息中设置自己的授权回调页(所谓授权回调页意即通过weibo账号授权个人应用之后的跳转页,设置什么都没差,这里我设置为个人的微博首页)。
授权
获取code
很多人查看新浪的sdk之后,可能选择了对应的python sdk,其实没必要,用接口反而变得复杂了,我们这里不用他的接口。
一般第三方应用通过微博接口来发送微博都是要用户授权的,想必各位看官亦如此做过,那么授权页面是哪个嘞
def get_auth_url(client_id, redirect_uri):
return '%s%s?%s' % ('https://api.weibo.com/oauth2/', 'authorize',
_encode_params(client_id=client_id,
response_type='code',
redirect_uri=redirect_uri))
client_id是自己的app_key,redirect_uri是上一步填写的授权回调页地址,复制生成的链接到浏览器打开,输入自己的微博账号进行授权。
auth
授权成功后,浏览器便会跳转到我们设置的授权回调页,从浏览器的地址栏中找到code字段,就有了授权code。
获取token
接下来需要通过code获取到token,这个token就是我们发微博的凭证:
def get_access_token(app_key, app_secret, redirect_url):
#通过url_auth输入weibo账号进行登录
#从登录成功后的回调url获得code
url_auth = get_auth_url(app_key, redirect_url)
print('[get_access_token]' + url_auth)
code = input('Input code:')
url_get_token = "https://api.weibo.com/oauth2/access_token"
payload = {
"client_id":app_key,
"client_secret":app_secret,
"grant_type":"authorization_code",
"code":code,
"redirect_uri":redirect_url
}
#获取access_token
res = requests.post(url_get_token, data=payload)
resj = json.loads(res.text)
return resj['access_token']
token只需获取一次,后面可以一直复用这个token,有效期好像是5 year
发微博
安全域名
新浪微博要求,每条通过应用接口发送的微博内容都必须包含安全域名字段,需要先在应用信息-基本信息-应用基本信息配置一个安全域名,我设置了weibo.com
调用接口
这里的安全域名还是使用了自己的微博主页,包含weibo.com即可:
def share_weibo(text, img):
access_token = '你的token'
#安全域名,sina限制文本内容必须有此字段
safe_domain = 'https://weibo.com/5296864682/profile?topnav=1&wvr=6'
url_share = 'https://api.weibo.com/2/statuses/share.json'
payload = {
'access_token':access_token,
'status':text + ' ' + safe_domain
}
if img :
files = {
"pic":img
}
res = requests.post(url_share, data = payload, files = files)
else :
res = requests.post(url_share, data = payload)
return res
测试
写个测试代码:
if __name__ == '__main__':
f = open(r"./share.jpeg", "rb")
text = input('Input text:')
res = share_weibo(text, f)
f.close()
运行:
[root@localhost share_weibo]# py sina_weibo.py
Input text:hello sky
成功发布一条图片微博:
hello sky
如果你想发个视频,可惜了,新浪没有提供对应的接口。我们只能通过在文本中包含已有视频的链接来达到类似的效果。比如要发这个视频:http://t.cn/Ail9eamb?m=4396440127989330&u=5296864682
运行:
[root@localhost share_weibo]# py sina_weibo.py
Input text:http://t.cn/Ail9eamb?m=4396440127989330&u=5296864682
成功发送一条视频的微博:
video
可以在我的微博看到刚刚发送的这条视频。
结语
还有一些接口比如评论之类的,可以自己测试下,在接口管理都可以看到对应的介绍。
附上源码:https://github.com/Fireplusplus/share_weibo
python 微博_用python发微博相关推荐
- python 自动发微博_用 Python 自动定时发微博
原标题:用 Python 自动定时发微博 其实小帅b已经挺久没有玩微博了,记得上次玩微博还是为了给周杰伦打榜,不过最近心血来潮,觉得俺的微博账号躺着也是躺着,要不就用 Python 做一个自动定时发微 ...
- 用python定时自动发微博_用 Python 自动定时发微博
其实小帅b已经挺久没有玩微博了,记得上次玩微博还是为了给周杰伦打榜,不过最近心血来潮,觉得俺的微博账号躺着也是躺着,要不就用 Python 做一个自动定时发微博的机器人,让它在上面飘一会. 怎么个飘法 ...
- 第一章 第一节:Python基础_认识Python
Python基础入门(全套保姆级教程) 第一章 第一节:Python基础_认识Python 1. 什么是编程 通俗易懂,编程就是用代码编写程序,编写程序有很多种办法,像c语言,javaPython语言 ...
- 用python定时自动发微博_用python自动发微博
--刚刚全部写完了点发布--结果什么都没保存--内心好忧伤. 终极目标是用raspberry pi + camera 捕捉画面,处理图像识别图中有我家主子(猫), 然后自动capture图像,发微博. ...
- python发微博_用 Python 自动发微博
虽然微博官方有Python SDK,但是下载链接竟然失效了??在Pypi找到一个库--weibo,貌似还不错 安装weibo库 pip install weibo 报错 "ERROR: Co ...
- python:从0开始自动发微博
前言 由于学院的微博需要发早安,晚安,而我经常忘记发,所以索性写个自动发微博的程序,放到服务器上..... 一.微博 1.注册一个微博 略 2.注册一个应用 名称随便取一个就行,分类和平台选择我们最熟 ...
- ppt python 图表_利用python分析weibo数据做成图表放入PPT中
起因 很久以前,就有个想法,就是自动分析微博的数据,但是之前一直想的是网页版展示,flask想学了好久都没学,偶然的一次看到了一篇关于python处理pptx的文章,再加上同窗三年的室友在毕业后竟然主 ...
- java python算法_用Python,Java和C ++示例解释的排序算法
java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...
- excel python插件_利用 Python 插件 xlwings 读写 Excel
Python 通过 xlwings 读取 Excel 数据 去年底公司让我做设备管理,多次委婉拒绝,最终还是做了.其实我比较喜欢技术.做管理后发现现场没有停机率统计,而原始数据有,每次要自己在Exce ...
- 网络安全用python吗_使用Python进行网络安全渗透——密码攻击测试器
相关文章: 本篇将会涉及: HTTP 基本认证 对HTTP Basic认证进行密码暴力攻击测试 什么是HTTP 基本认证 HTTP基本认证(HTTP Basic Authentication)是HTT ...
最新文章
- 利用tcpdump抓取mysql sql语句
- 美团点评基于 Flink 的实时数仓平台实践
- wxHtml 示例:wxHtmlEasyPrinting 测试
- php统计凌晨6点,凌晨是哪一段时间,0:00-6:00(午夜到天亮前)
- 静态static的内存图
- 深入理解RocketMQ中的NameServer
- 实验四android开发基础
- foreach 用法例子
- TinyXML2 入门教程
- Python解决模块无法引用问题之pymysql模块导入
- (转)Linux查看CPU,硬盘,内存的大小
- mac修改了/etc/profile导致所有命令不能用、mac下vim不能使用
- VMware虚拟机安装操作系统方法
- 8051 系列单片机内部结构
- 数据同步问题与解决方案:增量全量、数据漂移,数据更新、
- 分位数(理解层面解答)
- CWnd与CDialog-DoModal与ShowWindow区别
- 为什么阿里 P7 都找不到工作了?
- rn_xtcxyczjh-1 功能 封装 通用 回调
- jenkins安装配置
热门文章
- 如何实现网站内容秒收录?网站秒收录技巧分享!
- 中国黑客传说:游走在黑暗中的精灵
- 计算机主机开机为什么显示器不开,电脑开机后显示器不亮怎么办?电脑开机后显示器没反应的解决办法...
- PCIE知识点-010:PCIE 热插拔资料从哪获取
- linux 关闭屏幕键盘 软键盘
- 跳棋c语言课程设计,C语言课程设计(论文)-跳棋--154591860.doc
- Unity 代码帧动画
- 【Android Studio】Android Monitor找不到手机问题-无法显示运行程序问题解决
- 洛谷——P2342 叠积木
- php全局标签,dedecms的全局标签是什么意思