【业余记录文章所用】如何实现每日早上八点?

大家好,又见面了,我是你们的朋友全栈君。

此博客仅用于我的业余记录文章。特此贴出,供网友阅读和参考。如有侵权,请通知我,我将删除。

附加

很多大佬留言说这篇文章没用,因为打开手机就可以直接收到天气预报,何必一气之下发到邮箱! ! !那我只能在这里说:因为你没用,所以你没用! ! !

ps:其实有些也不是没有道理的。我觉得查天气预报很麻烦,所以查邮件不麻烦吗?哈哈哈

这主要是关于想法,而不是天气预报!不是天气预报! !不是天气预报! ! !天气预报只是一个例子。请不要无礼! ! !

以下是我将使用的两个场景:

平日下班前将分拣好的文件发送到领导邮箱。 (把文档放到指定文件夹,遍历发送) 早上8:00服务器日志发到我的邮箱。在上下班通勤的路上,晚上可以检查一下服务器有没有异常。稍后我会添加更多场景。 . .

以下内容未做改动,与原博文一致。

前言:

最近天气越来越冷,我每天都起来查看当天的天气。但是我也觉得查天气很麻烦,于是想出了自动获取天气预报,每天发到个人邮箱的想法。

如果您也发现难以查看天气,请阅读本文。还有这篇文章! !每天早上 8:00 将详细讲解如何将最近 7 天的天气情况发送到您的个人邮箱。有四个步骤可以自动将天气状况发送到您的个人邮箱。

1.注册免费天气API1.1开通泽风天气注册账号

1.下图为泽风天气首页:打开注册。

2.账号注册成功后,点击New Application创建Key,用于调用Zephyr Weather API。可以看出创建成功后的Key是一个长字符串,就是获取天气信息所需的key。

1.2打开天气API接口说明,查看泽风天气的开发文档。

API开发文档,点击跳转。

从上图可以看出(有商业版和免费版,我这里用的是免费版),天气类型有很多种,这里我们用预报,这是要得到3-10天的预报。

根据上图中的请求URL示例,我们需要调用的URL是

城市代码&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

图片[1]-【业余记录文章所用】如何实现每日早上八点?-唐朝资源网

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("主子你的邮件到了nnThis 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

图片[2]-【业余记录文章所用】如何实现每日早上八点?-唐朝资源网

from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart url = 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') # --------------------------------------发送文本----------------- # 发送邮件正文到对方的邮箱中

图片[3]-【业余记录文章所用】如何实现每日早上八点?-唐朝资源网

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') # 设置发件人邮箱的域名和端口,端口为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() get_weather_data()

复制

5.将代码部署到服务器,每天准时运行代码

说得好听一点,就是代码部署,也就是把代码复制到服务器上,然后让代码运行起来。这里会用到一点linux的知识。

5.1 先拷贝文件到服务器

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

5.2 无

在与python文件相同的文件夹下创建startup.sh文件(任意命名),然后填写startup.sh文件

python3 ./python 文件名 # 记住 / 前面有一个点 .

然后在/etc/crontab中填写stratup.sh文件的路径。

既然您已经学会了发送天气预报qq邮箱收发邮件服务器,那么每天发送语音或短视频怎么样? ,用定制的洛丽塔语音、玉姐的语音给对方发送天气预报信息的语音或者附上短视频qq邮箱收发邮件服务器,是不是很美呢? 点击下方文章链接跳转,学习DIY语音,获取短视频。

点击直接进入:【小孩变态技巧】系列——Speech-to-Text的Python实现? 也不行! !文字转语音,DIY你想要的萝莉声音! ! !点击直接:超级简单! ! !使用python下载无水印音视频

以上,只需稍作动手操作,每天8:00准时收到最新的天气预报信息。这次分享就到这里。如果您有任何问题,请在下方留言。

发布者:全栈程序员栈负责人,转载请注明出处:原文链接:

© 版权声明
THE END
喜欢就支持一下吧
点赞238赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容