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

发表于:2021-12-20 09:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:菜鸟学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 can't decode byte 0xae in position 241: illegal multibyte sequence 
  看起来是编码问题,我们可以通过修改源代码来规避。
   1. 从 pypi.org 上下载 weibo 库
   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' + 安全域名) 
  我们运行该代码,如果不出意外的话,我们就能够在该账号下的微博中看到刚刚发布的微博了。
  最简单的微博已经发布成功了,那么能不能发布带有图片的微博呢,我们来尝试一下
  根据接口 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
  最后效果如下:

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号