python 天气预报制作_【python 天气预报】python制作属于自己的天气预报

该博客介绍如何利用Python从和风天气API获取天气预报数据,并使用Jinja2模板渲染为HTML,最后通过SMTP发送包含天气信息的邮件。主要涉及requests库获取数据、json解析、邮件发送等技术。
摘要由CSDN通过智能技术生成

# coding=utf-8

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

import requests

import json

import jinja2

import os.path as pth

import smtplib

from email.mime.text import MIMEText

from email.utils import formataddr

from email.header import Header

HEFEN_D = pth.abspath(pth.dirname(__file__))

LOCATION = '杭州'

ORIGINAL_URL = 'https://free-api.heweather.com/s6/weather/forecast?parameters'

def get_data():

new_data = []

parametres = {

'location': LOCATION,

'key': 'XXXXXXXXXXXXXXXXX', #注册和风天气会给你一个KEY

'lang': 'zh',

'unit': 'm'

}

try:

response = requests.get(ORIGINAL_URL,params=parametres)

r = json.loads(json.dumps(response.text,ensure_ascii=False,indent=1))

r = json.loads(response.text)

except Exception as err:

print(err)

weather_forecast = r['HeWeather6'][0]['daily_forecast']

for data in weather_forecast:

new_obj = {}

# 日期

new_obj['date'] = data['date']

# 日出时间

new_obj['sr'] = data['sr']

# 日落时间

new_obj['ss'] = data['ss']

# 最高温度

new_obj['tmp_max'] = data['tmp_max']

# 最低温度

new_obj['tmp_min'] = data['tmp_min']

# 白天天气状况描述

new_obj['cond_txt_d'] = data['cond_txt_d']

# 风向

new_obj['wind_dir'] = data['wind_dir']

# 风力

new_obj['wind_sc'] = data['wind_sc']

# 降水概率

new_obj['pop'] = data['pop']

# 能见度

new_obj['vis'] = data['vis']

new_data.append(new_obj)

return new_data

def render_mail(data):

env = jinja2.Environment(

loader = jinja2.FileSystemLoader(HEFEN_D)

)

return env.get_template('hefentianqi.html').render({'data': data})

###################################发送电子邮件###################################

####################设置发送人#######################

sender = '1973536419@qq.com'

######################设置接收人#######################

# receiver1 = 'defa.lai@cgtz.com'

# receiver2 = '1973536419@qq.com'

receiver3='laidefa@dingtalk.com'

receiver4='dengshiqi6777@dingtalk.com'

#####################设置主题#######################

subject = '别走,我给你看个宝贝'

#################设置发送内容:1:发送html表格数据########################

data = get_data()

body = render_mail(data)

msg = MIMEText(body,'html','utf-8')

############################设置一些附属表头参数#############################

msg['From']=formataddr(["赖德发",sender])

# msg['To']=formataddr(["赖德发",receiver1])

# msg['To']=formataddr(["开心果汁",receiver2])

msg['To']=formataddr(["赖德发",receiver3])

msg['To']=formataddr(["邓施奇",receiver4])

msg['Subject'] = Header(subject, 'utf-8')

###################################登陆邮箱发送##################################

username = '1973536419@qq.com'

password = 'XXXXXXXXXXXXXX'

#################默认传输#################

# smtp = smtplib.SMTP_SSL("smtp.qq.com")

############################加密传送###################

smtp_server = 'smtp.qq.com'

smtp_port = 587

smtp = smtplib.SMTP(smtp_server, smtp_port)

smtp.starttls()

###########################################

smtp.login(username, password)

# smtp.sendmail(sender, [receiver1,receiver2,receiver3,receiver4], msg.as_string())

smtp.sendmail(sender, [receiver3,receiver4], msg.as_string())

smtp.quit()

print '发送电子邮件完成...'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值