Python 教你自动发微博,每日实现一句心灵鸡汤

7fc99f4be471db037c42a4651656069c.gif

作者 | 周萝卜

出品 | 萝卜大杂烩

最近在研究用 Python 来制作各个类别的机器人,今天先来分享一个自动发布新浪微博的机器人。

基本思路

其实要实现一个简单的自动发布微博机器人还是不难的,只需要每天按时找好要发布的素材(一般就是爬虫了),然后再通过微博开放出来的 API 接口,自动发布即可。

素材

对于素材,我这里选取的是金山词霸的每日一句英语,我们可以爬取该网站的相关信息来组成我们的微博素材。

http://news.iciba.com/views/dailysentence/

微博 API

微博给广大开发者提供了一个开放平台

https://open.weibo.com/

当然在使用这个平台之前,我们还是要先注册并创建好应用。比如像我这样,创建好一个应用

a92ceafe02f4e27ee625f87e282de82e.png

然后我们还需要设置好安全域名(后面发布微博时会用到),在应用信息->基本信息中设置。

872fe32205fa92ce858a4995ee6a6911.png

还需要设置应用回调地址,在应用信息->高级信息中设置。

0dbe8937f76466e79068e31c18dcf1b4.png

当然对于微博 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 can't decode byte 0xae in position 241: illegal multibyte sequence

看起来是编码问题,我们可以通过修改源代码来规避

  • 1. 从 pypi.org 上下载 weibo 库

3dfd9b001c05cba8b9c7a921aa069aca.png

  • 2. 然后解压该包,并修改文件 setup.py 如下代码

long_description=open('README.rst', encoding='utf-8').read(),
  • 3. 分别执行如下命令安装

python setup.py build
python setup.py install

至此可以安装 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' + 安全域名)

我们运行该代码,如果不出意外的话,我们就能够在该账号下的微博中看到刚刚发布的微博了。

f8a4e4065a2332368ba269c743c86c6b.png

最简单的微博已经发布成功了,那么能不能发布带有图片的微博呢,我们来尝试一下

根据接口 statuses/share 的文档说明,我们可以传入 pic 参数来进行图片的上传

7360543414f13977efe2feee85b647ca.png

我们传入 pic 参数尝试下

f = open('4.png', 'rb')
c.post('statuses/share', status='haha' + 安全域名, pic=f)
f.close()

可以的,能够正常发布带有图片的微博

d822b6c21bb62823836c9507e5d92770.png

那么现在自动发布微博搞定了,我们再来看看如何自动获取微博素材

微博素材

对于金山词霸的每日一句,我们可以使用如下的一个 API 来获得每天的信息

http://open.iciba.com/dsapi/

可以看到该接口返回的如下信息

135aa61ee71b42006c6d447979a25ec4.png

我们可以直接使用 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

最后效果如下

2433035dae87d1bb18eb58fa7afae532.png

198b8494ece67a9f459773a84075cc31.gif

66baad3644d940c8c07ddaa162b93b4b.png

技术

6种常用的绘制地图的方法,码住!

资讯

DeepMind 打造AI游戏系统

技术

9个好用的python操作文件方法

资讯

程序员是复制粘贴的工具人?还是…

f1f19e247c0b6107bd129fc0a938fd83.png

分享

96ac086d770621e05108833c6ed11420.png

点收藏

6a38db5bec50dc3fbea500b604e83f60.png

点点赞

1c5dca0f2442e127215507048907f914.png

点在看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值