Python 教你自动发微博,每日一句英语

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

 [[440912]]

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

基本思路

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

素材

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

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

微博 API

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

https://open.weibo.com/

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

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

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

当然对于微博 API 的调用,我们可以使用其他人封装好的第三方库来更加方便的操作,我这里使用了一个就叫做“weibo”的库,直接使用 pip 安装。

pip install weibo

不过我遇到了安装问题,报错如下 

  1. Traceback (most recent call last):  
  2.   File "setup.py", line 15, in <module>  
  3.     long_description=open('README.rst').read(),  
  4. UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 241: illegal multibyte sequence 

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

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

  •  2. 然后解压该包,并修改文件 setup.py 如下代码 
  1. long_description=open('README.rst', encoding='utf-8').read(), 
  •  3. 分别执行如下命令安装 
  1. python setup.py build  
  2. python setup.py install 

至此可以安装 weibo 库成功

准备工作与编写思路就是这些,下面我们来看看具体的过程与代码

自动发布微博

根据 weibo 库的说明文档,使用其操作微博还是相关容易的,只需要提供我们创建微博应用时的 App Key 与 App Secret 和应用回调地址信息即可。简单的调用代码如下 

  1. from weibo import Client  
  2. c = Client('App Key', 'App Secret', 'https://www.luobodazahui.top', username='username'password='password' 
  3. c.post('statuses/share', status='haha' + 安全域名) 

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

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

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

我们传入 pic 参数尝试下 

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

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

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

微博素材

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

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

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

我们可以直接使用 requests 库来调用该接口 

  1. import requests  
  2. url = 'http://open.iciba.com/dsapi/'  
  3. res = requests.get(url)  
  4. content_e = res.json()['content']  
  5. content_c = res.json()['note']  
  6. content = content_e + '\n' + content_c  
  7. content_t = res.json()['picture2'] 

现在我们来封装两个函数,把功能完善起来 

  1. def weibo(content, picture):  
  2.     ff = requests.get(picture).content  
  3.     c = Client(app_key, app_secret, 'https://www.luobodazahui.top', usernameusername=username, passwordpassword=password)  
  4.     c.post('statuses/share', status=content + 'https://www.luobodazahui.com', pic=ff 
  5. def auto_weibo():  
  6.     url = 'http://open.iciba.com/dsapi/'  
  7.     res = requests.get(url)  
  8.     content_e = res.json()['content']  
  9.     content_c = res.json()['note']  
  10.     content = content_e + '\n' + content_c  
  11.     content_t = res.json()['picture2']  
  12.     weibo(content, content_t)  
  13.     return 'OK' 

现在我们就可以创建一个定时任务,每天7点运行该脚本就可以啦

0 7 * * * python auto_weibo.py

最后效果如下

今天的分享就到这里啦,如果你觉得有用请务必点个赞 + 在看 支持下。 

 

责任编辑:庞桂玉 来源: 菜鸟学Python
相关推荐

2009-03-10 18:10:12

LinuxUbuntu技巧

2020-11-27 09:57:11

Python代码PyPy

2012-07-12 15:00:26

漏洞账号错乱新浪微博

2019-10-21 13:27:01

代码开发工具

2011-03-24 10:24:45

批量数据绑定

2011-03-28 15:48:52

批量数据绑定

2020-12-16 10:43:44

PythonPyPy代码

2011-06-13 09:25:01

断号

2013-03-22 10:53:42

PyConPython

2012-02-09 09:41:22

2013-05-10 10:56:09

2023-07-12 08:01:28

FOADMROADMOXC

2019-11-15 18:00:18

MySQLSQL数据库

2023-11-06 08:31:58

业务代码多线程

2023-09-05 23:34:52

Kubernetes云原生

2015-08-03 10:21:04

设计模式表达

2022-08-01 10:01:11

JavaScript语言代码库

2016-09-12 15:26:06

戴尔

2013-08-15 10:15:34

英语程序员

2011-04-29 16:29:02

微博智能电视三星
点赞
收藏

51CTO技术栈公众号