1 问题
定时任务中,每天统计一下今日博客的各项数据,并以邮件的形式发送给自己。
2 方法
- .首先在某目录下新建任务文件 crontest.cron,用于存在定时任务语句。
- .相同目录新建 hello.py 文件,并且编辑这个文件写一句简单的 print('Hello World')。
编辑 crontest.cron 文件,修改为 5,10,15,20,25,30,35,40,45,50,55,59 * * * * python hello.py >> ~/1.txt开始执行定时任务 (注意crontest.cron 文件路径和自己的一致):
crontab ~/crontest.cron
代码清单 1
# -*- coding: UTF-8 -*-from urllib.request import urlopenfrom bs4 import BeautifulSoupimport smtplibfrom email.mime.text import MIMETextfrom email.header import Headerimport time# 博客地址url = 'https://blog.csdn.net/smileyan9'html = urlopen(url)soup = BeautifulSoup(html.read())# 进一步缩小范围sources = soup.select('.data-info')soup = BeautifulSoup(str(sources))dls = soup.find_all(['dl']) notes = ['原创','周排名','总排名','访问','等级','积分','粉丝','获赞','评论','收藏']common = ''# 选择自己关注的数据以及顺序keys = [6,3,5,8,7,9]for key in keys: common = (notes[key] ':' dls[key]['title'] " ")date = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())print(date,'->',common)# 第三方 SMTP 服务mail_host = 'smtp.exmail.qq.com' #设置服务器mail_user = "root@smileyan.cn" #用户名mail_pass="Your password" sender = 'root@smileyan.cn'receivers = ['root@smileyan.cn'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱message = MIMEText(common, 'plain', 'utf-8')message['From'] = Header("Python 脚本(by smileyan)", 'utf-8')message['To'] = Header("幸运儿", 'utf-8')subject = datemessage['Subject'] = Header(subject, 'utf-8')try: smtpObj = smtplib.SMTP() smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号 smtpObj.login(mail_user,mail_pass) smtpObj.sendmail(sender, receivers, message.as_string()) print("邮件发送成功")except smtplib.SMTPException: print("Error: 无法发送邮件") |
---|
3 结语
一切复杂的任务都应该从最简单的开始,在理解基本过程后,就可以开始定时运行python脚本了。在解决了上面的定时任务后,需要解决写代码了,代码同样非常简单相关数据,这里需要在这篇博客的基础上加一些自己的特殊功能。