补充
有不少杠精小婊贝
留言说本文章没有用
,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!!
ps:其实部分杠精杠的也不无道理,觉得查看天气预报都麻烦了,那查看邮件就不麻烦吗?哈哈哈
这里主要介绍的是思路
,不是天气预报!不是天气预报!!不是天气预报!!!
天气预报只是用于举例。请各位不要再刚了!!!
下面是我会用到的两个场景:
- 工作日下班之前发送整理后的文档到领导邮箱。(将文档放到指定文件夹,遍历发送即可)
- 服务器日志在早晨8点发送至我的邮箱,上班通勤路上可以瞄几眼前晚服务器有异常否。
- 以后有用到的场景再做补充。。。
以下的内容并没有更改,与初发表的博文一致。
前言:
近来天气转凉,我是每日起床都会查一下当天的天气情况。但我又觉得查天气麻烦,于是乎产生了一个每日定时自动获取天气预报并且发送到个人邮箱的想法。
如果你也觉得查天气麻烦,那看这篇文章就对了。
而这篇文章!!将详细讲解如何实现每日早上八点将最近7天的天气状况发送到你的个人邮箱。
自动将天气状况发送到你的个人邮箱共有以下四个步骤。
1.注册免费天气API
1.1打开和风天气注册账号
1.下图是和风天气:https://dev.heweather.com/的首页,打开注册即可。
2.账号注册成功后点击 新建应用 ,创建一个Key,这个Key是用来进行和风天气API调用的。
可以看到新建成功后的Key是一串长长的字符串,这个就是获取天气信息需要用到的密钥啦。
1.2打开天气API接口说明,看看和风天气的开发文档。
API开发文档,点击即可跳转。
从上图中可以看到(有商业版与免费版我这里使用的是免费版),有多种weather-type,这里我们使用forecast,这个是获取3-10天预报。
根据上图的请求URL示例可知,我们需要调用的url为
https://free-api.heweather.net/s6/weather/forecast?location=城市代码&key=自己创建的Key
2.编写获取天气代码
城市可以填写中文,也可以填写城市代码城市代码查询。
2.1获取天气预报情况
import requests
url = ‘https://free-api.heweather.net/s6/weather/forecast?location=广州&key=xxxxxxxxx’
res = requests.get(url)
print(res.text)
返回的是json格式的文件,可以看到返回了从查询当天的起始的7天天气预报信息。
接下的任务就是解析这一堆json格式的数据啦。
2.2所在城市经纬度等信息查询
import json
import requests
url = ‘https://free-api.heweather.net/s6/weather/forecast?location=广州&key=xxxxxxxxx’
res = requests.get(url).json() # 因为返回的是json格式文件
result = res[‘HeWeather6’][0][‘basic’]
print(result)
这是所查询城市的经纬度,时区等等信息。
{‘cid’: ‘CN101280101’, ‘location’: ‘广州’, ‘parent_city’: ‘广州’, ‘admin_area’: ‘广东’, ‘cnty’: ‘中国’, ‘lat’: ‘23.12517738’, ‘lon’: ‘113.28063965’, ‘tz’: ‘+8.00’}
2.3查询所在城市未来7天信息
import requests
url = ‘https://free-api.heweather.net/s6/weather/forecast?location=广州&key=xxxxxxxxx’
res = requests.get(url).json() # 返回的数据为json格式
result = res[‘HeWeather6’][0][‘daily_forecast’]
print(result)
因为这里调用的API会返回7天的数据,所以会返回7组下图的数据。
{
“cond_code_d”: “100”, # 白天天气状况 100为晴 101为多云 104为阴 等
“cond_code_n”: “100”, # 夜间天气状况
“cond_txt_d”: “晴”, # 白天天气状况描述
“cond_txt_n”: “晴”, # 晚间天气状况描述
“date”: “2019-11-10”, # 预报日期
“hum”: “50”, # 相对湿度
“mr”: “16:33”, # 月升时间
“ms”: “04:21”, # 月落时间
“pcpn”: “0.0”, # 降水量
“pop”: “0”, # 降水概率
“pres”: “1013”, # 大气压强
“sr”: “06:37”, # 日出时间
“ss”: “17:43”, # 日落时间
“tmp_max”: “27”, # 最高温度
“tmp_min”: “16”, # 最低温度
“uv_index”: “7”, # 紫外线强度指数
“vis”: “25”, # 能见度,单位:公里
“wind_deg”: “-1”, # 风向360角度
“wind_dir”: “无持续风向”, # 风向
“wind_sc”: “1-2”, # 风力
“wind_spd”: “6” # 风速,公里/小时
}
…
2.4 获取自己所需要的天气信息
import csv
import requests
url = ‘https://free-api.heweather.net/s6/weather/forecast?location=广州&key=xxxxxx’
res = requests.get(url).json()
result = res[‘HeWeather6’][0][‘daily_forecast’]
location = res[‘HeWeather6’][0][‘basic’]
city = location[‘parent_city’]+location[‘location’]
names = [‘城市’,‘时间’,‘天气状况’,‘最高温’,‘最低温’,‘日出’,‘日落’]
for data in result:
date = data[‘date’]
cond = data[‘cond_txt_d’]
max = data[‘tmp_max’]
min = data[‘tmp_min’]
sr = data[‘sr’]
ss = data[‘ss’]
print(city,date,cond,max,min,sr,ss)
返回的数据
广州广州 2019-11-10 晴 27 16 06:37 17:43
广州广州 2019-11-11 晴 28 18 06:38 17:43
广州广州 2019-11-12 晴 29 18 06:39 17:42
广州广州 2019-11-13 多云 28 17 06:39 17:42
广州广州 2019-11-14 晴 25 15 06:40 17:42
广州广州 2019-11-15 晴 26 15 06:40 17:42
广州广州 2019-11-16 晴 27 16 06:41 17:41
3.编写发送邮件代码
这里参考菜鸟教程的Python SMTP发送邮件
1.首先去QQ邮箱
打开 设置-账户-开启服务-开启POP3/SMTP服务,然后点击生成授权码,python发送邮件要用。
直接上代码,不解释。
简单邮件传输协议
import smtplib
import email
import time
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
设置邮箱的域名
HOST = ‘smtp.qq.com’
设置邮件标题
SUBJECT = ‘今日份天气预报到了哟,主子’
设置发件人邮箱
FROM = ‘xxx@qq.com’
设置收件人邮箱
TO = ‘xxx@163.com,xxx@qq.com’ # 可以填写多个邮箱,用逗号分隔,后面会用split做逗号分割
message = MIMEMultipart(‘related’)
--------------------------------------发送文本-----------------
发送邮件正文到对方的邮箱中
message_html = MIMEText(“主子你的邮件到了\n\nThis is test”, ‘plain’, ‘utf-8’) # \n为换行
message.attach(message_html)
-------------------------------------添加文件---------------------
要确定当前目录有test.csv这个文件
message_xlsx = MIMEText(open(‘test.csv’, ‘rb’).read(), ‘base64’, ‘utf-8’)
设置文件在附件当中的名字
message_xlsx[‘Content-Disposition’] = ‘attachment;filename=“test01.csv”’
message.attach(message_xlsx)
设置邮件发件人
message[‘From’] = FROM
设置邮件收件人
message[‘To’] = TO
设置邮件标题
message[‘Subject’] = SUBJECT
获取简单邮件传输协议的证书
email_client = smtplib.SMTP_SSL()
设置发件人邮箱的域名和端口,端口为465
email_client.connect(HOST, ‘465’)
---------------------------邮箱授权码------------------------------
result = email_client.login(FROM, ‘你的授权码’)
print(‘登录结果’, result)
email_client.sendmail(from_addr=FROM, to_addrs=TO.split(‘,’), msg=message.as_string())
关闭邮件发送客户端
email_client.close()
4.完整代码
coding=gbk ## 注:linux服务器上不需要这一行,window需要
import csv
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
以上软件测试开发知识点,真正体系化!**
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-82gFqgXV-1712927618266)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!