前言

前不久萌生了学习下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_keyredirect_uri是上一步填写的授权回调页地址,复制生成的链接到浏览器打开,输入自己的微博账号进行授权。

auth

授权成功后,浏览器便会跳转到我们设置的授权回调页,从浏览器的地址栏中找到code字段,就有了授权code。

获取token

接下来需要通过code获取到token,这个token就是我们发微博的凭证:

def get_access_token(app_key, app_secret, redirect_url):#通过url_auth输入weibo账号进行登录#从登录成功后的回调url获得codeurl_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_tokenres = 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

个人主页:https://fireplusplus.github.io

用python发微博相关推荐

  1. Python 全栈系列89 - python 发微博文字+图片

    说明 通过python可以把图文信息程序化的发布到微博上,属于广播方式.前面已经用腾讯云的短消息实现了即时点对点的方式(0.045/条),以及通过邮件实现了非实时的点对点通信(非实时,免费).未来还可 ...

  2. python发微博_用 Python 自动发微博

    虽然微博官方有Python SDK,但是下载链接竟然失效了??在Pypi找到一个库--weibo,貌似还不错 安装weibo库 pip install weibo 报错 "ERROR: Co ...

  3. python发微博_Python自动化发微博(使用原生API)

    虽然有第三方的Python库,但也只是对request请求作简单的封装.所以以下将不使用第三方库. 创建应用 要使用微博的API,需先要有个应用.随便哪种应用都行,注册应用的主要目的是要获得App K ...

  4. python发微博头条文章,用 Python 自动发微博

    虽然微博官方有Python SDK,但是下载链接竟然失效了??在Pypi找到一个库--weibo,貌似还不错 安装weibo库 pip install weibo 报错 "ERROR: Co ...

  5. python发微博_Python使用新浪微博API发送微博的例子

    #!/usr/bin/env python # -*- coding: utf-8 -*- from weibopy.auth import OAuthHandler from weibopy.api ...

  6. python 微博自动点赞_用 Python 自动定时发微博

    ​其实小帅b已经挺久没有玩微博了,记得上次玩微博还是为了给周杰伦打榜,不过最近心血来潮,觉得俺的微博账号躺着也是躺着,要不就用 Python 做一个自动定时发微博的机器人,让它在上面飘一会. 怎么个飘 ...

  7. python 自动发微博_用 Python 自动定时发微博

    原标题:用 Python 自动定时发微博 其实小帅b已经挺久没有玩微博了,记得上次玩微博还是为了给周杰伦打榜,不过最近心血来潮,觉得俺的微博账号躺着也是躺着,要不就用 Python 做一个自动定时发微 ...

  8. 用python定时自动发微博_用python自动发微博

    --刚刚全部写完了点发布--结果什么都没保存--内心好忧伤. 终极目标是用raspberry pi + camera 捕捉画面,处理图像识别图中有我家主子(猫), 然后自动capture图像,发微博. ...

  9. 用python定时自动发微博_Python脚本实现自动发带图的微博

    要自动发微博最简单的办法无非是调用新浪微博的API(因为只是简单的发微博,就没必要用它的SDK了).参考开发文档http://open.weibo.com/wiki/API 进行代码编写 创建应用 要 ...

最新文章

  1. python中列表用某个数字出现的次数_Python实现统计给定列表中指定数字出现次数的方法...
  2. UNITY 手游(安卓)如何使用C/C++代码
  3. idea项目结构树状展示_「软件项目管理入门」(26)如何做功能结构设计?
  4. 程序员curd编程是什么_为什么许多程序员讨厌结对编程?
  5. python 运行cmd命令失败怎么办_python manage.py runserver命令在cmd命令框中可以正确执行,但是在pycharm的终端中运行就失败了!...
  6. CentOS 7 设置IP地址无效
  7. mysql sync es 异步双写_mysql数据同步es方案思考
  8. java 图像处理两例:图像缩放与圆角图片的制作
  9. struts2中的值栈对象ValueStack
  10. android电视机清理内存,电视盒子总是内存不足?五大清理方法释放更多内存
  11. 黑客动画吧-古墓探险之过关题解
  12. 分享关于如何检测视频流码率
  13. Loadrunner 接口测试方法
  14. CloudCompare源码分析之ccViewer模块:应用类(阅读经典)
  15. vue中如何实现换肤?
  16. JS_01_变量_数据类型
  17. 方案详解|AARRR+八角行为分析=用游戏化思维实现用户增长
  18. 语音识别类产品的分类及应用场景
  19. DNS预解析dns-prefetch是什么及怎么使用
  20. 线上打印马上送,支持线上打印文档的软件

热门文章

  1. html鼹鼠游戏,疯狂鼹鼠
  2. uboot中利用TFTP和NFS加载内核镜像和根文件系统
  3. 2021-08-12 This Mini Program cannot be opened as your Weixin version is out-of-date. Update Weixin
  4. 【图像检索】基于HSV的图像检索附matlab代码
  5. 计算机学院2022级新生邀请赛(三)
  6. 用python画雪花 科赫曲线递归_【TCE的编程小讲堂】【Python】【第三期】如何画出科赫雪花?(下)...
  7. c语言字符动画源码下载,C语言动画程序源码.docx
  8. Labview中数据类型转换
  9. 给硬件工程师的入门课-做硬件还有前途吗?聊聊一些机遇
  10. 神奇的操作,用买家手机号查询顺丰物流信息