使用新浪微博开放平台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

  最终效果如下

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线