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', 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 教你自动发微博,每日一句英语的更多相关文章
- selenium操作cookies实现免密登录,自动发微博
一直想用selenium实现个小功能,比如发微博之类的,但是有的网站在登录会有验证码,没想到太好的方法解决,于是想到利用cookies来登录网站 第一步:获取一个可用的cookies,获取的cooki ...
- Python实现将爱词霸每日一句定时推送至微信
前言 前几天在网上看到一篇文章<教你用微信每天给女票说晚安>,感觉很神奇的样子,随后研究了一下,构思的确是巧妙.好,那就开始动工吧!服务器有了,Python环境有了,IDE打开了...然而 ...
- 每日一句英语:怎样回答美国人的How is it going问候语?
和中国人"吃了吗"是一个性质,本质上仅仅是个话题的起始点,而不是真的想知道你吃了没有. 美国人打招呼有几种方式: 不太熟的人:How are you? 一 般说 pretty go ...
- Python+selenium整合自动发邮件功能
主要实现的目的是:自动将测试报告以邮件的形式通知相关人员 from HTMLTestRunner import HTMLTestRunner import HTMLTestReport from em ...
- python连接数据库自动发邮件
python连接数据库实现自动发邮件 1.运行环境 redhat6 + python3.6 + crontab + Oracle客户端 2.用到的模块 3.操作步骤 (1)安装python3.6参考 ...
- python自动发邮件库yagmail
#### 一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text import MIMEText from ...
- python自动发邮件
from email.header import Header from email.mime.text import MIMEText from email.utils import parsead ...
- python自动发邮件库yagmail(转)
一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text import MIMEText from email ...
- 【python】python 自动发邮件
一.一般发邮件的方法 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件. 注意到构造MIMETEXT对象时,第一个参数就是邮件正文,第 ...
随机推荐
- 攻防世界-Web-ics-05
根据题目提示直接进入设备维护中心 点击云平台设备维护中心发现page=index LFI漏洞的黑盒判断方法: 单纯的从URL判断的话,URL中path.dir.file.pag.page.archiv ...
- python数据处理(四)之数据获取与存储
1.前烟 几个数据问题 1.1 是否能够联系上作者本人 1.2 数据是否定期检查错误并更新 1.3 数据是否包含数据获取方法的信息,是否包含数据获取过程中使用的样本类型 1.4 有没有其他数据源可以验 ...
- java 面向对象(一):类与对象
1.面向对象学习的三条主线: * 1.Java类及类的成员:属性.方法.构造器:代码块.内部类 * * 2.面向对象的大特征:封装性.继承性.多态性.(抽象性) * * 3.其它关键字:this.su ...
- log4j系统日志(转载)
地址:http://www.codeceo.com/log4j-usage.html 日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录.在a ...
- Java面试题汇总(持续更新)
1. ==和equals的区别 答: 基础数据类型比较:只能使用==,比较值是否相等 引用数据类型比较: 没有重写equals方法:==和equals没有区别,比较的都是引用是否指向了同一块内存 重写 ...
- SpringMVC集成Mybatis
1.pom.xml中添加引入架包 <dependency> <groupId>mysql</groupId> <artifactId>mysql-con ...
- 微信小程序反编译~2020年
目录 摘要 介绍 安装反编译脚本 使用 获取wxapkg文件 反编译 结论 参考资料 摘要 安装wxappUnpacker小程序反编译工具并使用(2020.03) 关键词: 微信小程序反编译 wxss ...
- 【日常摘要】- RabbitMq实现延时队列
简介 什么是延时队列? 一种带有延迟功能的消息队列 过程: 使用场景 比如存在某个业务场景 发起一个订单,但是处于未支付的状态?如何及时的关闭订单并退还库存? 如何定期检查处于退款订单是否已经成功退款 ...
- 修改map中原来的各种Key
简单描述: 做数据迁移的时候,需要展示数据库的字段信息,但是我发现 Oracle的sql查询到的结果 出来默认是大写的 和 前端vue的参数小写开头+驼峰 不太一样 所以后台取到的数据都是是引用Lis ...
- OFD呼之欲来、来之跚跚,谁之罪?
软件国产化的浪潮势不可挡,美国逼得逾甚,我们压迫感逾强,唯有奋起直追方慰平生之志. 在板式文档领域,pdf已成为国际标准,亦可称为美国标准:它在该领域一枝独秀,已形成一览众山小之势! pdf出道20余 ...