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 urlopen from bs4 import BeautifulSoup import smtplib from email.mime.text import MIMEText from email.header import Header import 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 = date message['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脚本了。在解决了上面的定时任务后,需要解决写代码了,代码同样非常简单相关数据,这里需要在这篇博客的基础上加一些自己的特殊功能。