此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。

补充

有不少杠精小婊贝留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!!

ps:其实部分杠精杠的也不无道理,觉得查看天气预报都麻烦了,那查看邮件就不麻烦吗?哈哈哈

这里主要介绍的是思路不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!!

下面是我会用到的两个场景:

  1. 工作日下班之前发送整理后的文档到领导邮箱。(将文档放到指定文件夹,遍历发送即可)
  2. 服务器日志在早晨8点发送至我的邮箱,上班通勤路上可以瞄几眼前晚服务器有异常否。
  3. 以后有用到的场景再做补充。。。

以下的内容并没有更改,与初发表的博文一致。


前言:

近来天气转凉,我是每日起床都会查一下当天的天气情况。但我又觉得查天气麻烦,于是乎产生了一个每日定时自动获取天气预报并且发送到个人邮箱的想法。

如果你也觉得查天气麻烦,那看这篇文章就对了。
而这篇文章!!将详细讲解如何实现每日早上八点将最近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 requestsurl = '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 requestsurl = '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 requestsurl = '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 requestsurl = '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
import time
import requests
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultiparturl = r'https://free-api.heweather.net/s6/weather/forecast?location=广州&key=xxxxxx'
# 获取当日时间    2019-11-10
today_time = time.strftime('%Y-%m-%d', time.localtime(time.time()))def get_weather_data():res = requests.get(url).json()# res.encoding = 'utf-8'result = res['HeWeather6'][0]['daily_forecast']location = res['HeWeather6'][0]['basic']city = location['parent_city'] + location['location']names = ['城市', '时间', '天气状况', '最高温', '最低温', '日出', '日落']with open('today_weather.csv', 'w', newline='')as f:writer = csv.writer(f)writer.writerow(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']writer.writerows([(city, date, cond, max, min, sr, ss)])send_email()def send_email():# 设置邮箱的域名HOST = 'smtp.qq.com'# 设置邮件标题SUBJECT = '%s日份天气预报信息,请查收'%today_time# 设置发件人邮箱FROM = 'xxx@qq.com'# 设置收件人邮箱TO = 'xxx@163.com,xxx@qq.com'        # 可以同时发送到多个邮箱message = MIMEMultipart('related')# --------------------------------------发送文本-----------------# 发送邮件正文到对方的邮箱中message_html = MIMEText("%s日份天气预报到账啦,请查收" % today_time, 'plain', 'utf-8')message.attach(message_html)# -------------------------------------添加文件---------------------# today_weather.csv这个文件message_xlsx = MIMEText(open('today_weather.csv', 'rb').read(), 'base64', 'utf-8')# 设置文件在附件当中的名字message_xlsx['Content-Disposition'] = 'attachment;filename="today_weather.csv"'message.attach(message_xlsx)# 设置邮件发件人message['From'] = FROM# 设置邮件收件人message['To'] = TO# 设置邮件标题message['Subject'] = SUBJECT# 获取简单邮件传输协议的证书email_client = smtplib.SMTP_SSL(host='smtp.qq.com')# 设置发件人邮箱的域名和端口,端口为465email_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()get_weather_data()

5.部署代码到服务器,以便每日准时运行代码

说的好听就叫代码部署,换句话说就是将代码拷贝到服务器,然后让代码运行。
这里会用到一丢丢linux的知识。

5.1 首先拷贝文件到服务器

这一步很简单,直接复制黏贴即可。

5.2 无

创建一个和 python文件在同一个文件夹的 startup.sh文件(命名随意),然后在 startup.sh文件的里面填写

python3 ./python文件名称 # 记得 / 前面有个小点 .


然后再 /etc/crontab 里面填写 stratup.sh文件的路径即可。

既然你学会了发送天气预报,那再加上每天发送一句语音或短视频如何? ,用定制的萝莉音,御姐音给对方发送天气预报信息的语音或者附加一段短视频,岂不美哉??点击下方文章链接跳转,学习diy语音以及获取短视频的方式吧。

  • diy定制自己的文字转语音
  • 获取抖音短视频

点击直达:【奇巧淫技】系列-Python实现 语音转文字??非也!!是文字转语音,DIY你想要的萝莉音!!!
点击直达:超简单!!!利用python下载无水印某音视频

以上,动手操作一番即可,就可以每天8点准时收到最新的天气预报信息了。
如果你懒得动手,可以尝试在留言里动手留下你的邮箱+城市(反正我也不会给你弄)
这次的分享就到这里。如果有什么疑问可以在下方留言哦。

【奇巧淫技】python 助你每天早上八点自动发送天气预报邮件到QQ邮箱相关推荐

  1. python向自己qq邮箱发信息_【奇巧淫技】python!每天早上八点自动发送天气预报邮件到QQ邮箱...

    本文为CSDN博主「SunriseCai」的原创文章 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用 ...

  2. 【奇巧淫技】Python实现 语音转文字??非也!!是文字转语音,DIY你想要的萝莉音!!!

    本文章纯野生,无任何借鉴或抄袭他人文章.坚持原创 前提一:有一篇你很喜欢的文章或者小说,阅读起来眼睛会很干涉之类的. 前提二:老人家看书不方便,将文字转换成语音,再进行播放. 前提三:想DIY你自己的 ...

  3. python 语音转文字_《奇巧淫技》系列-Python实现 语音转文字??非也!!是文字转语音,DIY你想要的萝莉音!!!-Go语言中文社区...

    本文章纯野生,无任何借鉴或抄袭他人文章.坚持原创前提一:有一篇你很喜欢的文章或者小说,阅读起来眼睛会很干涉之类的. 前提二:老人家看书不方便,将文字转换成语音,再进行播放. 前提三:想DIY你自己的御 ...

  4. 算法很美第一章 位运算的奇巧淫技

    第一章 位运算的奇巧淫技 1.2 题解:如何找数组中唯一成对的那个数 知识点: A^A=0 A^0=A(一个数与0进行按位异或,结果是他自己) 对一个序列进行按位异或,可以消除掉序列中的重复项,比如: ...

  5. iOS 开发的一些奇巧淫技

    iOS开发的一些奇巧淫技1&2 CGfloat和float的区别? 现在上架的app都要求支持64位系统,那么CGFloat和float的区别就在这里.command+左键点击CGFloat. ...

  6. 位运算概览与奇巧淫技

    文章目录 一.位运算概述 二.位运算概览 异或 二进制数的原码.反码.补码 左移 << 右移 >> 无符号右移 >>> 三.位运算的使用奇巧淫技 判断奇偶数 ...

  7. 蓝桥杯算法竞赛系列第一章——位运算的奇巧淫技及其实战

    遇见蓝桥遇见你,不负代码不负卿! 第二章"递归"已将更新咯,欢迎铁汁们点评!蓝桥杯算法竞赛系列第二章--深入理解重难点之递归(上)_安然无虞的博客-CSDN博客 目录 一.位运算符 ...

  8. 【Python融于生活】之我想要保存QQ邮箱富途的附件

    一.前言 对于编程来说,我期望的是并不仅仅用于make money,而是出于生活,融于生活. 最近炒股,每天都会有一封邮件发到我的QQ邮箱,里面有今天账户的结算信息,感觉这个挺有意义的,可以记录每天的 ...

  9. Python利用SMTP/IMTP制作简单邮件(QQ邮箱)发送程序(保姆级)

    先看效果图和代码 效果图 import smtplib from email.mime.text import MIMEText # 邮件正文 from email.header import Hea ...

最新文章

  1. React Native 红屏之Could not connect to development server.
  2. 浅谈以太坊智能合约的设计模式与升级方法
  3. hive mysql性能_Hive数据库安全审计功能
  4. fir.im同款企业级APP分发平台系统源码
  5. 关于AD域账户和组的管理技巧
  6. opencv-api FlannBasedMatcher
  7. 屌丝就爱尝鲜头——java8再判断
  8. grub2与grub区别
  9. matlab状态空间程序,实验四用MATLAB求解状态空间模型
  10. 文献检索报告 计算机网络管理技术 中农大,文献检索论文--计算机网络管理技术《文献检索》报告.doc...
  11. 什么是通配符SSL证书?
  12. 用Java解决牛客网小米校招编程真题XM5句子反转
  13. Simulink子系统
  14. 发布功能完成02《ivx低代码签到系统制作》
  15. 语音转文字怎么转?三个方法让你学会怎么语音转文字
  16. 前端登录界面通用模版
  17. ubuntu系统安装完nvidia显卡驱动后黑屏,不能进入系统
  18. python 随手记
  19. 25 个很棒的 Python 脚本(迷你项目)的集合
  20. Java基础 - 并发、锁

热门文章

  1. 开县影剧院座次_如何使用SteamVR的桌面剧院模式在VR中玩任何游戏
  2. modbus_tk库的使用和分析
  3. latex 箭头上带_LaTeX技巧931: 让你的公式带上箭头指示
  4. LBF算法的环境配置
  5. 优秀开源项目之一:视频监控系统iSpy
  6. Linux性能优化实战: 套路篇-优化性能问题的一般方法(56)
  7. matlab fft计算功率,使用 FFT 获得功率频谱密度估计
  8. cad测量快捷键 距离 面积
  9. 视觉开发 学习 参考课本_D3的视觉参考
  10. java 实例化bean_spring实例化bean