请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站 今天是: 2021-05-06    美好的一天,从现在开始
开启辅助访问      
切换到窄版

Waylee黑技术

 找回密码
 注册会员
搜索
热搜: 天龙 运维 kali
查看: 207|回复: 0
收起左侧

[Python] 查询天气预报并发送到指定的邮箱内

[复制链接]

311

主题

355

帖子

1516

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1516
发表于 2021-4-10 22:40:23 | 显示全部楼层 |阅读模式
安装第三方模块:


任务中需要使用requests库中的某些方法帮助我们完成目标网站的访问请求。命令行窗口中输入pip install requests指令
pip install requests
如果需要指定python版本运行pip 使用:

python3.9 -m pip install requests

进入Python解释器环境,输入如下代码:
data = requests.get('http://wthrcdn.etouch.cn/weather_mini?city=北京')



数据结构整理如下图:

202101141722009818.png


我们经常会输出类似"今日XX天气:XX,温度:XX~XX"之类的文本,而XX的内容是根据变量的变化而改变的,所以我们需要一种可以将变量和字符串结合输出的方式,这种方法称作格式化字符串。

在Python中格式化字符串的方法是使用format()方法,先在需要格式化的字符串内部用大括号{}在需要变量打印的位置占位,之后在字符串后用format(变量1,变量2,变量……)依次替换字符串内的占位符。

  • >>> name = "Tom"
  • >>> type = "晴"
  • >>> print("Hello {},今日天气 {}。".format(name,type))
  • 输出结果:Hello Tom,今日天气 晴。


自动化邮箱配置:

电子邮件是非常自由且通用的联系方式之一,不用及时回复,记录可以保存,有空查看和回复即可。

使用Python发送邮件,也是非常便利,常用于程序的运行结果上报等。

首先介绍一下所使用的库:yagmail
安装命令:pip install yagmail

虽然Python官方内置了邮件相关库,但是使用起来,不方便理解,且代码量很大。所用yagmail,简单、易用、容易书写和管理。

请在命令行窗口中输入pip install yagmail指令,安装yagmail模块:

 [csdn ~]$ pip install yagmail

任务使用的邮箱是QQ邮箱,请大家保证自己都有一个在用的QQ邮箱。

首先需要去配置一下QQ邮箱的配置,如下图:
第一步:点击页面上方 设置——在邮箱设置中找到账户选项

第二步:页面下拉至POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

确保你邮箱账号的 POP3/SMTP 服务已启动。


邮箱发送天气预报:

第一步:导入库,然后初始化对象,如下:

 

>>> import yagmail

>>> yag = yagmail.SMTP(user='你的QQ邮箱地址@qq.com', password='输入刚刚复制的授权码',host='smtp.qq.com')

第二步:发送邮件,目标是自己,随便写一个标题和内容即可,后续可自行编辑内容,如下:

>>> yag.send(to = '你的QQ邮箱地址@qq.com',subject ='测试邮件标题',contents = "测试邮件内容")

执行完成后,可以去QQ邮箱页面刷新页面,看有没有收到邮件。

注意:

    1.yag.send()内to后的邮箱即为接收邮箱;

    2.subject后的字符为邮箱标题;

    3.contents后的字符为邮件内容。



具体演示代码
python

import requests
import yagmail
#读取天气预报网页信息
data = requests.get('http://wthrcdn.etouch.cn/weather_mini?city=海宁')
weather = data.json()
today_low = weather['data']['forecast'][0]['low'] #最低温
today_high =weather['data']['forecast'][0]['high']#最高温
today_type = weather['data']['forecast'][0]['type'] #天气
yag = yagmail.SMTP(user='hnxq@foxmail.com', password='邮箱密码',host='smtp.qq.com')
tianqi = "今日海宁天气:{},气温:{}~{},感冒多发期,适量补充水分,适当增减衣物。".format(today_type,today_low,today_high)
yag.send(to = '784055837@qq.com',subject ='今日天气预报',contents=[tianqi] )






效果: QQ截图20210411200807.jpg





高级模式
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

为兴趣而生,注册一起交流。 立即登录云玩 立即注册

QQ|手机版|Waylee黑技术 ( 浙ICP备15015590号-1 )

|浙公网安备33048102000118号

GMT+8, 2021-5-6 23:51 , Processed in 0.061888 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表