使用新浪微博开放平台api同步微博内容至自己网站(一个自动发布新浪微博的机器人(图)分享(组图) )
优采云 发布时间: 2021-12-26 03:11使用新浪微博开放平台api同步微博内容至自己网站(一个自动发布新浪微博的机器人(图)分享(组图)
)
最近在研究使用Python制作各种类型的机器人。今天给大家分享一个自动发布新浪微博的机器人。
基本思想
其实实现一个简单的微博机器人并不难。你只需要每天准时找到要发布的素材(一般是爬虫),然后通过微博开放的API接口自动发布。
材料
素材方面,我这里选择的是金山词霸的每日一句英文,我们可以爬取本网站的相关信息,组成我们的微博素材。
微博接口
微博为开发者提供开放平台
当然,在使用这个平台之前,我们仍然需要注册并创建一个应用程序。比如像我一样,创建一个应用程序
然后我们还需要设置一个安全域名(以后发布微博时会用到),在应用信息->基本信息中设置。
还需要设置应用回调地址,在应用信息->高级信息中设置。
当然,对于微博API的调用,我们可以使用其他人打包的第三方库,操作起来更加方便。我这里用了一个叫“weibo”的库,直接用pip安装。
pip 安装微博
但是我遇到了一个安装问题,错误如下
Traceback (most recent call last):
File "setup.py", line 15, in
long_description=open('README.rst').read(),
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 241: illegal multibyte sequence
好像是编码问题,我们可以通过修改源代码来规避
long_description=open('README.rst', encoding='utf-8').read(),
python setup.py build
python setup.py install
至此就可以成功安装微博库了
准备工作和写作思路就是这些,下面我们来看看具体的过程和代码
自动发布微博
根据微博库的文档,使用它来操作微博是比较容易的。您只需要在我们创建微博应用时提供App Key和App Secret以及应用回调地址信息即可。简单的调用代码如下
from weibo import Client
c = Client('App Key', 'App Secret', 'https://www.luobodazahui.top', username='username', password='password')
c.post('statuses/share', status='haha' + 安全域名)
我们运行代码,如果没有任何反应,我们将可以在该帐户下的微博中看到刚刚发布的微博。
最简单的微博已经发布成功了,那么我们可以发布带图片的微博,我们试试吧
根据接口status/share的文档,我们可以传入pic参数来上传图片
我们传入 pic 参数并尝试
f = open('4.png', 'rb')
c.post('statuses/share', status='haha' + 安全域名, pic=f)
f.close()
是的,它可以正常发布带图片的微博
那么现在微博的自动发布就完成了,下面我们来看看如何自动获取微博素材
微博素材
对于金山词霸的每日一句,我们可以使用以下API获取每日信息
可以看到界面返回如下信息
我们可以直接使用requests库来调用这个接口
import requests
url = 'http://open.iciba.com/dsapi/'
res = requests.get(url)
content_e = res.json()['content']
content_c = res.json()['note']
content = content_e + '\n' + content_c
content_t = res.json()['picture2']
现在我们封装两个函数来完成功能
def weibo(content, picture):
ff = requests.get(picture).content
c = Client(app_key, app_secret, 'https://www.luobodazahui.top', username=username, password=password)
c.post('statuses/share', status=content + 'https://www.luobodazahui.com', pic=ff)
def auto_weibo():
url = 'http://open.iciba.com/dsapi/'
res = requests.get(url)
content_e = res.json()['content']
content_c = res.json()['note']
content = content_e + '\n' + content_c
content_t = res.json()['picture2']
weibo(content, content_t)
return 'OK'
现在我们可以创建一个定时任务,每天7点运行脚本。
0 7 * * * python auto_weibo.py
最终效果如下