Python 教你自动发微博,每日一句英语
最近在研究用 Python 来制作各个类别的教自句英机器人,今天先来分享一个自动发布新浪微博的微博机器人。
基本思路
其实要实现一个简单的每日自动发布微博机器人还是不难的,只需要每天按时找好要发布的教自句英素材(一般就是爬虫了),然后再通过微博开放出来的微博 API 接口,自动发布即可。每日
素材
对于素材,教自句英我这里选取的微博是金山词霸的每日一句英语,我们可以爬取该网站的每日相关信息来组成我们的微博素材。
http://news.iciba.com/views/dailysentence/
微博 API
微博给广大开发者提供了一个开放平台
https://open.weibo.com/
当然在使用这个平台之前,教自句英我们还是微博要先注册并创建好应用。比如像我这样,每日创建好一个应用
然后我们还需要设置好安全域名(后面发布微博时会用到),教自句英在应用信息->基本信息中设置。源码库微博
还需要设置应用回调地址,每日在应用信息->高级信息中设置。
当然对于微博 API 的调用,我们可以使用其他人封装好的第三方库来更加方便的操作,我这里使用了一个就叫做“weibo”的库,直接使用 pip 安装。
pip install weibo
不过我遇到了安装问题,报错如下
Traceback (most recent call last): File "setup.py", line 15, in <module> long_description=open(README.rst).read(), UnicodeDecodeError: gbk codec cant decode byte 0xae in position 241: illegal multibyte sequence看起来是编码问题,我们可以通过修改源代码来规避
1. 从 pypi.org 上下载 weibo 库至此可以安装 weibo 库成功
准备工作与编写思路就是这些,下面我们来看看具体的过程与代码
自动发布微博
根据 weibo 库的说明文档,使用其操作微博还是相关容易的,只需要提供我们创建微博应用时的 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 + 安全域名)我们运行该代码,如果不出意外的站群服务器话,我们就能够在该账号下的微博中看到刚刚发布的微博了。
最简单的微博已经发布成功了,那么能不能发布带有图片的微博呢,我们来尝试一下
根据接口 statuses/share 的文档说明,我们可以传入 pic 参数来进行图片的上传
我们传入 pic 参数尝试下
f = open(4.png, rb) c.post(statuses/share, status=haha + 安全域名, pic=f) f.close()可以的,能够正常发布带有图片的微博
那么现在自动发布微博搞定了,我们再来看看如何自动获取微博素材
微博素材
对于金山词霸的每日一句,我们可以使用如下的一个 API 来获得每天的信息
http://open.iciba.com/dsapi/
可以看到该接口返回的如下信息
我们可以直接使用 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, usernameusername=username, passwordpassword=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
最后效果如下
今天的分享就到这里啦,如果你觉得有用请务必点个赞 + 在看 支持下。