> 文档中心 > QQ邮箱 接受 天气查询 阿里云自动运行学习记录

QQ邮箱 接受 天气查询 阿里云自动运行学习记录


QQ邮箱 接受 天气查询 阿里云自动运行学习记录

学习记录

    • QQ邮箱 接受 天气查询 阿里云自动运行学习记录
  • 前言
  • 一、对于天气的查询
    • 1.中华万年历API接口,获取天气信息
  • 二、qq邮箱的使用步骤
    • 1.申请qq邮箱的权限
  • 三、在阿里云上定时执行python jio本
  • 四、结果
  • 总结

前言

就是闲的无聊,自己想玩玩就去试了一下主要是有几个小demo的缝合吧,我觉得我自己写的贼垃圾写出来只是记录一下学到的东西,后面要是有想法可以再改,也希望和大家交流一下,欢迎批评与斧正,还望不吝赐教。
在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、对于天气的查询

1.中华万年历API接口,获取天气信息

天气查询代码如下:

# '中华万年历API接口,获取天气信息'import jsonimport requestsdef weather_work(city):    url = 'http://wthrcdn.etouch.cn/weather_mini?city={}'.format(city)    f = requests.get(url)    jsons = json.loads(f.text)    i = jsons['data']['forecast'][0]    str_pr = i['date'] + "\n" + "天气 " + i['type'] + "\n" + i['high'] + "\n" + i['low'] + "\n" + "风力 " + str( i['fengli'])[-5:-3] + "\n" + i['fengxiang']    a = "\n" + "今天是雨天记得带伞哦" + "\n"    b = "\n" + "今天热了注意防晒哦" + "\n"    c = "\n" + "没错是我今天也要元气满满哦" + "\n"    for k in str(i['type']): if k == "雨":     text = str_pr + a + c elif k == "晴":     text = str_pr + b + c else:     text = str_pr + c    return textif __name__ == '__main__':    print(weather_work("你在的地区"))

二、qq邮箱的使用步骤

1.申请qq邮箱的权限

操作如下:
登录QQ邮箱->账号设置->开启服务->获取授权码
获取授权码的时候需要手机验证码

在这里插入图片描述
在这里插入图片描述

邮箱发送小样如下:

class Send:    def __init__(self): self.send_user = '你的QQ邮箱' self.password = '授权码' self.email_host = 'smtp.qq.com'    def send_mail(self, user_list, sub, content): message = MIMEMultipart() message['From'] = self.send_user message['To'] = ';'.join(user_list) message['Subject'] = sub message.attach(MIMEText(content, 'plain', 'utf-8')) server = smtplib.SMTP_SSL(self.email_host, 465) server.login(self.send_user, self.password) server.sendmail(self.send_user, user_list, message.as_string()) server.quit() 

三、在阿里云上定时执行python jio本

这个环节你的有个阿里云服务器或者你有个好哥们有个闲着的服务器
QQ邮箱 接受 天气查询 阿里云自动运行学习记录在这里插入图片描述
crontab
提交和管理用户的需要周期性执行的任务
补充说明
crontab命令 被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
语法
例如:

crontab(选项)(参数)选项-e:编辑该用户的计时器设置;-l:列出该用户的计时器设置;-r:删除该用户的计时器设置;-u<用户名称>:指定要设定计时器的用户名称。查看crontab服务状态:service cron status手动启动crontab服务:service cron start查看crontab服务是否已设置为开机启动,执行命令:实例每1分钟执行一次command* * * * * command每小时的第3和第15分钟执行3,15 * * * * command

然后就进去编辑了

crontab -e30 7 * * * python的路径 .py的路径 >> 日志文件的路径每天七点半执行一次将输出结果写入日志文件手动启动crontab服务:service cron start

四、结果

QQ邮箱 接受 天气查询 阿里云自动运行学习记录
这里我用了

 try :send_mail(user_list2, sub, content2) print("ok",time.asctime()) except: print("bug", time.asctime())

要是成功了就print ok 失败了就 print bug 还记得上面说的那个日志吗?就是帮我记录是否成功运行的
QQ邮箱 接受 天气查询 阿里云自动运行学习记录
看看俺们的成功一次失败一次
但是好在服务器是执行了的哈哈哈
为什么会失败?一个循环加判断的地方错了这里也记录一下我的python错误,哎看来是真的渣啊

    for k in str(i['type']): if k == "雨":     text = str_pr + a + c if k == "晴":     text = str_pr + b + c    return text

UnboundLocalError: local variable 'text' referenced before assignment
麻了还以为是我的大方向出问题了

if 要判断的条件:    条件成立的时候,要做的事情    .....elif 要判断的条件:    .....elif 要判断的条件:    ....else:    条件不成立的时候,要做的事情    .....

发现问题之后

 if k == "雨":     text = str_pr + a + c elif k == "晴":     text = str_pr + b + c else:     text = str_pr + c    return text

总结

在这里插入图片描述
不想调代码了,要是不出问题的话应该就是成功了,每个模块我已经给大家分享了,要怎么玩看你们,无非就是功能添加写的比我还牛皮就是了,哈哈,到这吧先。