【Python】用Python获取天气并定时自动发送到邮箱

xiaoxiao2021-02-28  35

获取天气,发送邮件的函数:定时任务的实现: 如果想每天7:00获取可以,输入:每隔五分钟的实现:

以前用Python写的一个定时获取天气情况,并用邮件发送的小功能,需要使用到一点网页数据解析.

获取天气,发送邮件的函数:

刚刚测试了下,这个网站可能已经停更了.最新更新还是五月二十八,但是思路是这样,没问题.

# coding: utf-8 import datetime import sys reload(sys) sys.setdefaultencoding('utf-8') import urllib2 import json import smtplib from email.mime.text import MIMEText from email.header import Header import time cityname = "天津" citycode = '101030100' if __name__ == '__main__': time.sleep(10) if citycode: try: url = "http://tj.nineton.cn/Heart/index/all?city=CHTJ000000&language=zh-chs&unit=c&aqi=city&alarm=1&key=78928e706123c1a8f1766f062bc8676b" # 构造网址 content = urllib2.urlopen(url).read() # 读取网页源代码 content = content.decode("utf-8").encode("utf-8") data = json.loads(content) # 使用json库将字符转化为字典 # 使用json库将字符转化为字典 zero = data['weather'][0]["now"]["text"] one=data['weather'][0]["today"]["suggestion"]["dressing"]["details"] two=data['weather'][0]["today"]["suggestion"]["flu"]["details"] four=data['weather'][0]["now"]["temperature"] five=data['weather'][0]["now"]["feels_like"] six=data['weather'][0]["now"]["air_quality"]["city"]["quality"] severn=data['weather'][0]["last_update"] # 获取字典 # 格式化字符 # 输出天气信息 except Exception: print("Not Found!!") now = datetime.datetime.now() c=now.strftime('%Y-%m-%d %H:%M:%S') # 时间转换 en = '%s天气'%c try: sender = 'xxx@163.com' # 邮件发送者 receiver = 'xxx@qq.com' # 邮件接收者,个人用''就可以 # receiver = ['xxx@qq.com',xxx1@qq.com] # 多个接收者的时候 subject = en smtpserver = 'smtp.163.com' username = 'xxx@163.com' # 使用的邮箱服务器用户 password = 'password' # 密码 neirong = '今日天津的天气预报:''\n' \ '天气:%s''\n' \ '穿衣建议:%s''\n' \ '注意提示:%s''\n' \ '当前温度:%s''\n' \ '体感:%s''\n' \ '空气质量:%s''\n' \ '最后一次更新时间:%s''\n' % (zero, one, two, four, five, six, severn) msg = MIMEText(neirong, 'plain', 'utf-8') # 中文需参数‘utf-8',单字节字符不需要 msg['Subject'] = Header(subject, 'utf-8') msg['From'] = 'Yu<Xxxx@163.com>' # 发送者的邮箱 smtp = smtplib.SMTP() smtp.connect('smtp.163.com') # 服务器地址 smtp.login(username, password) # 登录服务器 smtp.sendmail(sender, receiver, msg.as_string()) smtp.quit() print "success" except Exception,e: print e print "failed" ## xxx换成自己的邮箱,密码

定时任务的实现:

使用到Linux中的crontab. 在终端输入:

crontab -e

如果想每天7:00获取可以,输入:

0 7 * * * python /pwd/tianqi.py ## pwd表示py文件的绝对路径

每隔五分钟的实现:

*/5 * * * * python /pwd/tianqi.py ## pwd表示py文件的绝对路径 # */5表示每五分钟
转载请注明原文地址: https://www.6miu.com/read-2632586.html

最新回复(0)