作者:周萝卜

最近在研究用 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', 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

最后效果如下

作者:周萝卜

最近在研究用 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', 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

最后效果如下

Python 教你自动发微博,每日一句英语的更多相关文章

  1. selenium操作cookies实现免密登录,自动发微博

    一直想用selenium实现个小功能,比如发微博之类的,但是有的网站在登录会有验证码,没想到太好的方法解决,于是想到利用cookies来登录网站 第一步:获取一个可用的cookies,获取的cooki ...

  2. Python实现将爱词霸每日一句定时推送至微信

    前言 前几天在网上看到一篇文章<教你用微信每天给女票说晚安>,感觉很神奇的样子,随后研究了一下,构思的确是巧妙.好,那就开始动工吧!服务器有了,Python环境有了,IDE打开了...然而 ...

  3. 每日一句英语:怎样回答美国人的How is it going问候语?

    和中国人"吃了吗"是一个性质,本质上仅仅是个话题的起始点,而不是真的想知道你吃了没有. 美国人打招呼有几种方式: 不太熟的人:How are you? 一 般说 pretty go ...

  4. Python+selenium整合自动发邮件功能

    主要实现的目的是:自动将测试报告以邮件的形式通知相关人员 from HTMLTestRunner import HTMLTestRunner import HTMLTestReport from em ...

  5. python连接数据库自动发邮件

    python连接数据库实现自动发邮件 1.运行环境 redhat6 + python3.6 + crontab + Oracle客户端 2.用到的模块  3.操作步骤 (1)安装python3.6参考 ...

  6. python自动发邮件库yagmail

    #### 一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text import MIMEText from ...

  7. python自动发邮件

    from email.header import Header from email.mime.text import MIMEText from email.utils import parsead ...

  8. python自动发邮件库yagmail(转)

    一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text import MIMEText from email ...

  9. 【python】python 自动发邮件

    一.一般发邮件的方法 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件. 注意到构造MIMETEXT对象时,第一个参数就是邮件正文,第 ...

随机推荐

  1. Maven 专题(四):什么是Maven

    1 Maven 简介 Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和 依赖管理.Maven 这个单词的本意是:专家,内行.读音是['meɪ ...

  2. python 面向对象专题(五):私有成员、类方法、静态方法、属性、isinstance/issubclass

    https://www.cnblogs.com/liubing8/p/11325421.html 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubc ...

  3. 微信浏览器内 h5 直接唤醒 app 之 微信开放标签 wx-open-launch-app

    以前微信浏览器内想要直接唤醒 app 要么接微信的应用宝要么你是腾讯的干儿子. 而在微信在2020年5月分推出了“微信开放标签”功能 wx-open-launch-app 用于微信浏览器内直接唤醒 a ...

  4. equals方法与==关系的总结

    /** * ==&&equals区别 * * ==比较的是栈内存中的值 * 对于基本类型数据,比较的是栈内存中的值 * 对于引用数据类型,比较的是栈内存中的值(值的真是含义是一个地址) ...

  5. C#/VB.NET 在Word中添加条码、二维码

    本文介绍如何通过C# 和VB.NET代码实现在Word文档中添加条码和二维码.代码中将分为在Word正文段落中.页眉页脚中等情况来添加. 使用工具:Free Spire.Office for .NET ...

  6. FileNotFoundError: [WinError 2] 系统找不到指定的文件。 解决方案

    用Idle运行Python脚本的时候发现如下错误: Traceback (most recent call last): File "C:\Users\DangKai\Desktop\pyt ...

  7. EF中延迟加载的那些事

    延迟加载又称懒加载,通俗一点就是关联了一个对象,不用的时候不去查这个对象,当调用的时候再组织sql去查出这个对象的相关内容. 一.在使用EF时,我们会发现借助于框架生成的实体类中的的导航属性通常是标记 ...

  8. javascript原型:写一个合并后数组去掉同类项的方法

    <!DOCTYPE html> <html> <head> <title>test013_Array_prototype_unique()</ti ...

  9. JAVA集合一:ArrayList和LinkedList

    JAVA集合一:ArrayList和LinkedList 参考链接: HOW2J.CN 前言 这几篇博客重点记录JAVA的几个重要的集合框架:ArrayList.LinkedList.HashMap. ...

  10. Redis集群搭建(哨兵)

    最近工作中需要用到redis哨兵集群,笔者自己搭建了3遍,直接开始 环境: 1,系统环境 系统 版本 操作系统 CentOS 7.4 Redis 5.0.8 2,IP请修改成自己的IP redis I ...