前段时间做了个爬虫,感觉好好玩,但是每次ssh登上去激活爬虫抓取数据就很麻烦。自动运行很简单用crontab设置下就好啦,但是我想让它自动把数据发送给我。
crontab
一开始想用短信,但是短信只能发送67个字符,而且有数量限制,超过100条/月就要收费。而且不能全完全自定义(就是很丑),所以后面就想到用邮件了。(公众号和TG推送正在研究)
100条/月
后端用的是python,SMTP服务商用的是腾讯企业邮,网上搜了一下,实现起来很简单,只要数据没有错误就可以发送邮件。
这一步最简单了,三十行代码就可以实现了,直接复制就好了。
#coding:utf-8 import smtplib from email.mime.text import MIMEText # 使用第三方 SMTP 服务 mail_host = "smtp.exmail.qq.com"# 设置服务器 mail_username = "noreply@tstrs.me" # 用户名 mail_auth_password = "你的密码😀" # 授权密码 sender = "noreply@tstrs.me" receivers = "saltyleo@tstrs.me" # 可以填多个收件人以','分割 # html邮件 #mail_msg = """ #""" #message = MIMEText(mail_msg, "html", "utf-8") message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8') # 纯文本邮件 message["From"] = (u'TSTR-Blog <%s>'%sender ) # 昵称,你可以将TSTR-Blog修改成你的 message["To"] = receivers # 收件人 message["Subject"] = "一个测试邮件" try: #smtpObj = smtplib.SMTP(mail_host, 25) # 生成smtpObj对象,使用非SSL协议端口号25 smtpObj = smtplib.SMTP_SSL(mail_host, 465)# 生成smtpObj对象,使用SSL协议端口号465 smtpObj.login(mail_username, mail_auth_password) # 登录邮箱 smtpObj.sendmail(sender, receivers, message.as_string()) # 发送给一人 #smtpObj.sendmail(sender, receivers.split(','), message.as_string()) # 发送给多人 except smtplib.SMTPException: print ("Error: 无法发送邮件")
我是先在本地测试的,直接在WSL上运行,如果没有任何提示就是发送成功了。然后过几秒就会收到邮件了:
请不要将测试脚本命名为 email.py,这会影响python调用email函数。否则你会跟我一样:
如果提示“Error: 无法发送邮件”请依次检查smtp服务器、用户名、密码、发件人、收件人、端口号。有些邮箱服务商必须使用SSL,有些却不必须。
还是上面的代码,不过要注释掉这一行:
message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8') # 纯文本邮件
并且将这几行取消注释:
#mail_msg = """ 这里这里这里这里这里这里这里这里这里这里这里这里这里这里这里这里这里(记得删掉) #""" #message = MIMEText(mail_msg, "html", "utf-8")
在这里添加你要发送的html邮件的内容,如果不知道该填什么的话可以在这里查看。或者使用GitHub上别人开源的简单模板:https://github.com/SaltyLeo/responsive-email/blob/master/simple.html
这里
如果不报错的话,收到的邮件就应该像这样:
html邮件本质就是一个网页,否能够正确显示完全取决于邮件客户端。大多数的邮件客户端(比如Outlook和Gmail),会过滤HTML设置,让邮件面目全非。
这里就不贴代码了,简单说下就是使用爬虫爬取数据并筛选出来,插入到邮件模板内。想要将变量插入模板需要使用以下代码:
"""+变量+"""
目前我只做到了定时发送,根据数据变化发送还在研究。只需在使用命令 crontab -e在其中添加上你想要运行的时间和脚本位置即可。
这里发现除了crontab里填写的脚本位置必须是绝对位置之外,脚本内调用的文件也必须是绝对位置,否则会报错找不到文件:
EOF
参考资料
要想实现这样的效果仅仅只需要安装一个lonelyscreen就就可以了。
非常好用,至少目前可以满速下载。百兆宽带10M/s下载速度,已经很满足了。
最近在学python爬虫,最基础的就是requests库了,安装命令十分简单。
需要自己做一个爬虫定期抓取矿池查询页面的数据并将其保存。
无服务器部署域名停靠页
目录
热门标签
更多语言
站点信息