Python实例---接入笑话API+发送邮件+云主机crontab定期执行
2016-05-08 10:47
871 查看
本例的思路来源于网上,但网上执行步骤讲解的不够清楚,尤其实现这一系列的步骤中,会有很多坑,今天就详细说一下,给想玩一下的朋友作个参考。
首先,第一步是如何从免费笑话api接口下载到笑话的文本,api大家都知道是应用程序接口,即我们可以发送请求、获得数据。我选择iteys,有请求方法示例,
用Python实现如下:需要载入包,
用urllib2发送请求和获得数据,因为从接口取出的数据默认是josn格式(如何解析json请参考我的另一篇博客),需要解析成Python支持的dic格式,通过生成随机数,用以拼接请求的url实现随机翻页效果,代码如下:
接下来通过解析json把每一则笑话的title(json串对应的字段问author)和content,拼接起来,生成随机数实现随机抽取10条笑话,
代码如下:
其次,进行发送邮件的代码编写,经过上一步已经获得要发送的内容了(joke_str),脚本发送邮件有比较固定的思路:调用smtplib模块,smtp服务器连接、smtp服务器登录、设置加密传输,smtp服务器发送,smtp服务器断开连接,第一个坑出现了–邮箱的问题:我先后尝试了qq邮箱和163邮箱,qq邮箱一定记得开启smpt服务,并且会获得一个独立的密码,smtp服务器登录要用这个独立密码,163邮箱是默认开通的,且登录密码就是邮箱账号密码即可。代码及tips如下:
最后,发送邮件脚本完成后,就差一步了,发送邮件这种简单粗暴的活,当然不能手动来了。。。,这一步需要你有一个云主机服务器,这样我们就可以把脚本挂在服务器下,定时执行,岂不美哉??~~,我用的是Ubuntu14.04,可以开启crontab服务,步骤如下:1、设置定时任务,执行crontab -e命令编辑,2、crontab -e格式参照Linux运维工程师的技术博客。3、重启service crontab restart,查看crontab服务,执行crontab -l如果出现如下图所示表示设置成功
,第二个坑:时区的问题,云主机默认的是UTC(世界时区),所以定时的时候,北京时间要减去8小时。。,
经过以上步骤,这个实例就完成了~
首先,第一步是如何从免费笑话api接口下载到笑话的文本,api大家都知道是应用程序接口,即我们可以发送请求、获得数据。我选择iteys,有请求方法示例,
用Python实现如下:需要载入包,
import sys, urllib, urllib2, json import random
用urllib2发送请求和获得数据,因为从接口取出的数据默认是josn格式(如何解析json请参考我的另一篇博客),需要解析成Python支持的dic格式,通过生成随机数,用以拼接请求的url实现随机翻页效果,代码如下:
page_num = random.randint(1,500) url = 'http://api.1-blog.com/biz/bizserver/xiaohua/list.do?page=%d'%page_num req = urllib2.Request(url) resp = urllib2.urlopen(req) content = resp.read() if (content): print 'content ok' #print content #解析json串 dic_str = json.loads(content)
接下来通过解析json把每一则笑话的title(json串对应的字段问author)和content,拼接起来,生成随机数实现随机抽取10条笑话,
代码如下:
num = random.randint(0,9) for i in range(0,10): joke_str += 'title:' + dic_str['detail'][num + i]['author'] + '\n' + 'content:' + dic_str['detail'][num + i]['content'] + '\n' + '---'*20 + '\n' joke_str += u'来源:ITeye'
其次,进行发送邮件的代码编写,经过上一步已经获得要发送的内容了(joke_str),脚本发送邮件有比较固定的思路:调用smtplib模块,smtp服务器连接、smtp服务器登录、设置加密传输,smtp服务器发送,smtp服务器断开连接,第一个坑出现了–邮箱的问题:我先后尝试了qq邮箱和163邮箱,qq邮箱一定记得开启smpt服务,并且会获得一个独立的密码,smtp服务器登录要用这个独立密码,163邮箱是默认开通的,且登录密码就是邮箱账号密码即可。代码及tips如下:
import smtplib import string HOST='smtp.163.com' SUBJECT='happy new day~~~' TO=['收信邮箱1','收信邮箱2','收信邮箱x']#实现群发功能 FROM='xiao_junsheng@163.com' text=joke_str BODY=string.join(( 'From: %s' %FROM, 'To: %s' %TO, 'Subject: %s' %SUBJECT, '', text ),'\r\n') try: server=smtplib.SMTP() server.connect(HOST,'25') server.starttls() server.login('***@163.com','password') for item in TO: server.sendmail(FROM,item,BODY)#sendmail 发送的内容为string类型,body/msg,as_string() server.quit() print '邮件发送成功~' except Exception,e: print '失败'+str(e)
最后,发送邮件脚本完成后,就差一步了,发送邮件这种简单粗暴的活,当然不能手动来了。。。,这一步需要你有一个云主机服务器,这样我们就可以把脚本挂在服务器下,定时执行,岂不美哉??~~,我用的是Ubuntu14.04,可以开启crontab服务,步骤如下:1、设置定时任务,执行crontab -e命令编辑,2、crontab -e格式参照Linux运维工程师的技术博客。3、重启service crontab restart,查看crontab服务,执行crontab -l如果出现如下图所示表示设置成功
,第二个坑:时区的问题,云主机默认的是UTC(世界时区),所以定时的时候,北京时间要减去8小时。。,
经过以上步骤,这个实例就完成了~
相关文章推荐
- Android Manifest 用法
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 什么是 GraphQL?
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- Spark RDD API详解(一) Map和Reduce
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Spring Boot 开发微服务
- Python将excel导入到mysql中
- CentOS下使用yum命令安装计划任务程序crontab